صفحه ها
دسته
وبلاگ من در بلاگفا
عکس من
وبلاگهاي دوستان
ورودي هاي پنجره اميد
معرفي وب سايت هاي پرطرفدار
سايتهاي دوستان
لينك هاي دسترسي سريع
مطالب من در ثبت مطالب روزانه
آرشیو
آمار وبلاگ
تعداد بازدید : 907282
تعداد نوشته ها : 1492
تعداد نظرات : 398
Rss
طراح قالب
مهدي يوسفي
141. SaveSetting با گرفتن نام برنامه(دلخواه) Setion و Key و یه رشته ه عنوان اطلاعات یا تنظیم مورد نظر ، یک Key توی رجیستری با اسم ]نام برنامه[ درست میکنه.توی اون یک Key دیگه با اسم [Section] درست میکنه و توی اون یک Value از نوع رشته (SZ)با اسم [Key] درست میکنه و مقدار اون رو برابر رشته ای که بهش دادیم (Setting) قرار میده.که بعدا با تابع GetSetting و یا GetAllSettings میتونین به این اطلاعات دسترسی پیدا کنین.این اطلاعات توی رجیستری توی شاخه ی :
HKEY_CURRENT_USER\Software\VB and VBA Program Settings

درست میشن. با توجه به مقدار هایی که بهشون دادیم:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\[appName]\[Section]

ScaleX .142-3 و ScaleY یه مقدار و 2 تا واحد میگیرن و واحد مقداری رو که گرفتن تغییر میدن مثلا از Pixel به Inch .آرگومان اول همون مقدار مورد نظره مثلا 1000 دومی واحدیه که برای مقدار باید در نظر گرفته بشه بطور پیشفرض vbHimetric هستش.بعدی واحد خروجیه که بطور بیشفرض برابر با ScaleMode فرم هستش که اون هم به طور پیشفرض vbTwips هستش.مثلا اگه بخواهیم ببینیم 10اینچ چند میلیمتره :
ScaleX(10, vbInches, vbMillimeters)

Seek .144 شماره ی فایلی که باز شده رو میگیره و برای حالت Random شماره رکورد بعدی (که قراره نوشته یا خوانده بشه) و برای حالت های دیگه شماره بایت بعدی که قراره نوشته یا خوانده بشه رو برمیگردونه که قبل از اینکه چیزی نوشته یا خونده بشه مقدار یک رو برمیگردونه بعد 2 و به همین ترتیب.فرقش هم با Loc همینه.Loc شماره آخرین رکورد یا بایتی که نوشته یا خوانده شده رو برمیگردونه.

145. SendKeys یک یا چند کارکتر یا دکمه های کیبرد رو به پنجره ی فعال ارسال میکنه درست مثل اینکه دکمه های کیبرد فشار داده شده باشن.2 تا آرگومان میگیره که دومی اختیاریه.آرگومان اولی کاراکتر هایی هستن که میخواهیم ارسال کنیم مثلا “vb” .واسه دکمه های خاص کیبرد مثل HOME ها DELETE و ... باید اون ها رو توی آکلاد قرار بدین مثلا :
برای insert از “{INSERT}” یا “{INS}” استفاده میشه.
برای end از “{END}” استفاده میشه.
برای delete از “{DELETE}” یا “{DEL}” استفاده میشه.
برای page down از “{PGDN}” استفاده میشه.
برای page up از “{PGUP}” استفاده میشه.
برای home از “{HOME}” استفاده میشه.
برای علامت چپ از “{LEFT}” استفاده میشه.
برای علامت بالا از “{UP}” استفاده میشه.
برای علامت راست از “{RIGHT}” استفاده میشه.
برای علامت پایین از “{DOWN}” استفاده میشه.
برای print screen از “{PRTSC}” استفاده میشه.
برای scroll lock از “{SCROLLLOCK}” استفاده میشه.
برای break از “{BREAK}” استفاده میشه.
برای back space از “{BACKSPACE}” یا“{BS}” یا “{BKSP}” استفاده میشه.
برای enter از “{ENTER}” یا "~" (بدون آکلاد) استفاده میشه.
برای F1 ، F2 و... هم از “{F1}” ، “{F2}” و ... استفاده میشه.
برای escape از “{ESC}” استفاده میشه.
برای tab از “{TAB}” استفاده میشه.
برای caps lock از “CAPSLOCK” استفاده میشه.

واسه نگه داشتنه شدن کلید های Control و Alt و Shift به ترتیب از ^ ، % ، + استفاده کنین.مثلا برای کنترل بعلاوه ی v از “^v” استفاده کنین.اگه میخواهین یکی ازین دکمه ها واسه مجموعه ای از کلید ها مورد استفاده قرار بگیره از پرانتز استفاده کنین مثلا برای کنترل بعلاوه ی vb از “^(vb)” استفاده کنین.برای استفاده همزمان از چند تا ازین کلید ها هم اون ها رو پشت سر هم استفاده کنین مثلا برای شیفت بعلاوه ی کنترل بعلاوه v از “+^v” استفاده کنین.این کار رو برای دکمه های HOME و INSERT و ... هم میتونین بکنین.مثلا کنترل بعلاوه یHOME میشه “^{HOME}” .

آرگومان دوم از نوع Boolean هستش که بطور پیشفرض False هستش.اگه True باشه وقتی که کلیدی به یک پنجره ارسال میشه تابع منتظر میشه تا اون پنجره عملیات فشرده شدن کلید رو برای خودش پردازش کنه بعد کنترل به تابع برمیگرده.

146. SetAttr آدرس یه فایل رو میگیره و Attributes مربوط به اون رو تغییر میده.(مثل سیستم آرشیو نرمان و ...)

147. Focus این تابع Focus رو به کنترلی که این متد از اون فراخوانی بشه میده.اگه قبلش اسم کنترل رو نیاریم بطور پیشفرض Focus به فرم ی که تابع توش فراخوانی شده داده میشه.

148. Sng کار تابع Sign( علامت) توی ریاضی رو میکنه.به این صورت که یک عدد میگیره.اگه عدد بزرگتر از صفر باشه مقدار 1 اگه برابر با صفر باشه مقدار صفر و اگه کوچکتر از صفر باشه مقدار 1- رو برمیگردونه.

149. Shell آدرس یه فایل اجرایی رو میگیره و اون رو اجرا میکنه و Process ID اون رو برمیگردونه.آرگومان اولی آدرس فایل هستش که میتونه آدرس کامل باشه یا فقط اسم فایل (برای فایل هایی که توی پوشه ویندوز یا سیستم یا دایرکتوری جاری هستن) .آرگومان دومی هم نوع نمایش اون ها هست که مشخصه مثلا اگه بخواهیم برنامه توی حالت Maximize باز بشه از vbMaximizedFocus استفاده میکنیم.

150. Show متد مربوط به فرم هستش که یک فرم رو لود میکنه و نشون میده.آرگومان اول اگه vbModal باشه فرم اول(که کد توش نوشته شده) تا زمانی که فرم دوم(که با استفاده از متد Show نشون داده شده) بسته نشه قابل دسترسی نیست و کد بعد توی فرم اجرا نمیشه.مثل وقتی که توی فرم یه MsgBox نشون میدین؛تا وقتی که پنجره ی MsgBox رو نبندین فرم غیر قابل دسترسه و برنامه به خط بعد نمیره.آرگومان بعدی هم فرمیه که به عنوان والد فرمی که قراره نشون داده بشه در نظر گرفته میشه و مقدار دهیش هم اختیاریه.مثلا

‘ ‘In Form 1 :
Form2.Show vbModal,Form1

151. Sin سینوس زاویه ی داده شده(بر حسب رادیان) رو حساب میکنه.

152. SLN

153. Space(و Space$) یک عدد میگیره و به تعداد اون عدد Space برمیگردونه مثلا Space(4) مقدار “ “ رو برمیگردونه.

154. Split یه رشته و یه کاراکتر جدا کننده میگیره و با توجه به اون کاراکتر کلمه های موجود توی اون رشته رو توی یک آرایه رشته ای قرار میده.مثلا اگه رشته ی “VB Is Easy” و کاراکتر “ “ رو بهش بدیم اعضای آرایه ای که برمیگردونه “VB" ، “Is” و “Easy” هستن.یا اگه “One_Two_Three” و “_” رو بهش بدیم اعضای آرایه “One” ، “Two” و “Three” میشن.آرگومان اول رشته ی مورد نظره.آرگومان بعدی کاراکتر مورد نظره که بطور پیشفرض “ “ (Space) در نظر گرفته میشه.آرگومان بعدی حداکثر تعداد اعضا هستش مثلا اگه برای مثال قبلی این آرگمان رو 2 میگذاشتین اعضای آرایه “One” و “Two” میشدن(عضو سومی وجود نداشت) آرگومان بعدی هم نوع مقایسه برای کاراکتریه که بهش میدیم.(توی توضیح تابع InStr در مورد نوع مقایسه توضیح دادم.)

155. Sqr رادیکال یک عدد رو میگیره.مثلا Sqr(9) = 3. .برای جذر گرفتن یک عدد با فرجه بغیر از 2 از توان استفاده کنین مثلا اگه بخواهین از 8 با فرجه 3 جذر بگیرین از 8 ^ (1/3) استفاده کنین.

156. Str (و Str$) یه مقدار رو به نوع Str تبدیل میکنه.مثلا “Str(1) = “1

StrComp .157 دو تا رشته رو مقایسه میکنه.اگه رشته ها برابر بودن مقدار 0 .اگه اولی از دومی بزرگتر بود مقدار1 و اگه دومی از اولی بزرگتر بود مقدار -1 رو برمیگردونه.2 تا آرگومان اول 2 تا رشته ی مورد نظر هستن.سومی هم نوع مقایسه دو تا رشته هستش که توی توضیح تابع Instr درموردش گفتم اما چون به این تابع بیشتر مربوط میشه اینجا هم میگم. اگه از vbBinaryCompare استفاده کنین بین حروف کوچک و بزرگ تفاوت گذاشته میشه و اون ها مساوی حساب نمیشن (Case Sensitive) اگه از vbTextCompare استفاده کنین حروف بزرگ و کوچک یکی حساب میشن. vbDatabaseCompare هم مربوط به Access هستش و کاری بهش نداریم.مثلا (StrComp(“abCD”,”abcd”,vbBinaryCompare مقدار -1 رو برمیگردونه یعنی رشته ها با هم مساوی نیستن.در صورتی که 0= (StrComp(“abCD”,”abcd”,vbTextCompare.

این رو هم بگم که ویبی به طور پیشفرض Case Sensitive هستش و حروف بزرگ و کوچک مساوی نیستن یعنی “VB” <> “Vb” اما اگه کد Option Compare Text رو اول کدها(بالای فرم یا ماژول) بزارین این حساسیت ویبی از بین میره.

158. StrConv واسه تبدیل کردن نوع یک رشته به یک نوع دیگه بکار میره.آرگومان اول رشته ی مورد نظره .آرگومان بعدی هم نوع جدید هستش.که یکی از مقدار های زیر میتونه باشه :
vbFromUnicode – با این آرگومان تابع رشته ای که بش دادیم رو Unicode در نظر میگیره و اون رو به ANSI تبدیل میکنه.
vbHiragana - کاراکتر های Katakana ی توی رشته رو به Hiragana تبدیل میکنه.(مربوط به Encoding کره ایه و بدرد ما نمیخوره اصلا!)
vbKatakana – برعکس قبلی.
vbLowerCase – همه ی حروف بزرگ توی رشته رو به حروف کوچک تبدیل میکنه.مثلا “Visual Basic” میشه “visual basic”
vbNarrow – کاراکتر های 2 بایتی رو به کاراکتر های تک بایتی تبدیل میکنه
vbWide - برعکس قبلی.
vbPopperCase – اولین حروف همه ی کلمه های موجود توی رشته(رشته ای که بعد از فاصله قرار داره) رو به حروف بزرگ تبدیل میکنه.مثلا “Visual basic is easy” رو به “Visual Basic Is Easy” تبدیل میکنه.
vbUnicode - کاراکتر های متن رو به کاراکتر های Unicode تبدیل میکنه.
vbUpperCase - همه ی حروف کوچک توی رشته رو به حروف بزرگ تبدیل میکنه.مثلا “Visual Basic” میشه “VISUAL BASIC”

این رو هم بگم که این تابع مثل بقیه تابع های کار با رشته ی ویبی رشته ای که بهش میدیم رو تغییر نمیده و رشته ی جدید رو برمیگردونه.

159. String (و String$) یک عدد(n) و یه کاراکتر میگیره و یه رشته که حاوی n تا از اون کاراکتره برمیگردونه .(مثل Space که n تا فاصله برمیگردونه) مثلا ”String(4,”a”) = “aaaa.در ضمن به جای اون کاراکتر میتونین کد اسکیش رو هم به تابع بدین مثلا ”String(4,65)=”aaaa.

160. StrReverse یه رشته رو برعکس میکنه مثلا ”StrReverse(“VisualBasic”) = “cisaBlausiV
پنج شنبه بیست و ششم 10 1387
. Pmt

122. Point مختصات یه نقطه از فرم رو میگیره و رنگ اون نقطه(بر اساس RGB:Red-Green-Blue) رو برمیگردونه.

123. PopupMenu یه Popup Menu روی فرم نشون میده.آرگومان اولی اسم اون منو هست که اونو توی محیط ویبی ساختین.
دومی Flags یا میشه گفت Options مربوط به نحوه ی نمایش منو هستش که یکی (یا چند تا) از اینها میتونه باشه :

vbPopupMenuRightAlign منو رو سمت راست مختصاتی که بهش دادین نمایش میده
vbPopupMenuLeftAlign منو رو سمت چپ مختصاتی که بهش دادین نمایش میده(پیشفرض)
vbPopupMenuCenterAlign منو رو وسط مختصاتی که بهش دادین نمایش میده
vbPopupMenuLeftButton منو فقط دکمه چپ موس رو تشخیص میده.(اگه روی گزینه هاش راست کلیک کنین اتفاقی نمیفته) (پیشفرض)
vbPopupMenuRightButton منو دکمه چپ و راست موس رو تشخیص میده.

دو تا آرگومان بعدی مختصات جاییه که میخواین منو نمایش داده بشه.آرگومان آخر هم گزینه ی پیشفرضیه که توی گزینه های منو کلفت تر از بقیه نشون داده میشه .واسه این آرگومام هم باید اسم منو رو قرار بدین.مثلا اگه منوی شما اینطوری باشه:

Edit (mnuEdit)
Copy (mnuCopy)
Cut (mnuCut)
Delete (mnuDel)
Paste (mnuPaste)

برای نمایش منوی Edit برای وقتی که روی TextBox کلیک میشه :

Private Sub TextBox1_Click()
Call PopUpMenu(mnuEdit, vbPopupMenuRightAlign Or vbPopupMenuRightButton,,,mnuCopy)
End Sub

که در این حالت منوی کپی پیشفرض میشه.

124. PPmt

125. PrintForm صفحه ی فرمی که توش تابع فراخوانی شده رو واسه چاپ به پرینتر میبره.

126. PSet واسه رسم نقطه با رنگ داخواه روی فرم بکار میره.آرگومان اول مختصات نقطه.بعدی هم رنگ هستش مثلا PSet (100,100),vbRed یا Form1.Pset… یا Picture1.PSet..

127. PV

128. QBColor یک عدد بین 0 تا 15 میگیره و بر اساس اون ها یک رنگ از نوع RGB برمیگردونه.
0 برای سیاه 1 برای آبی تیره 2 برای سبز تیره 3 برای فسفری تیره 4 برای قرمز تیره 5 برای بنفش 6 برای زرد 7 برای سفید تیره!(خاکستری کم رنگ) 8 برای خاکستری 9 برای آبی 10 برای سبز .11 برای فسفری 12 برای قرمز 13 برای صورتی 14 برای زرد 15 برای سفید. مثلا (Form.BackColor = QBColor(9) ‘=vbRed = RGB(255,0,0

129. Randomize واسه این به کار میره که نتایج تابع Rnd() که واسه بدست آوردن اعداد تصادفی بکار میره هر دفعه تکراری نباشه.مثلا این کد رو در نظر بگیرین :

Debug.Print Rnd()
Debug.Print Rnd()
Debug.Print Rnd()
‘Prints :
0.7055475
0.533424
0.5795186

توی یه برنامه ای که با این کد من درست کردم هر دفعه که برنامه اجرا میشد همین مقدار ها بدست میومد.واسه جلوگیری از این کار از Randomize استفاده میکنیم.

130. Rate

131. Refresh فرم( یا هر آبجک دیگه ای که متد مربوط بهش باشه) رو Refresh میکنه.یعنی اون شی دوباره رسم میشه.

132. Replace توی رشته ای که بهش میدیم یک رشته رو جایگزین یه رشته ی دیگه میکنه و رشته ی جدید رو برمیگردونه.آرگومان اول رشته ی اصلیه.دومی رشته ای هستش که باید پیدا بشه و رشته ی جدید جایگزینش بشه.رشته ی بعدی رشته ی جدید هستش که قراره جایگزین بشه.آرگومان بعدی هم جایی هستش که عمل جایگزینی باید از اونجا شروع بشه.بعدی حداکثر تعداد جایگزینیه .بعدی هم نوع مقایسه هستش که توی توضیح تابع InStr در موردش گفتم.مثلا :
Debug.Print Replace(“It’s Visual Basic!”,”a”,”XX”) ‘ It’s VisuXXl BXXsic!
Debug.Print Replace(“It’s Visual Basic!”,”a”,”XX”,7) ‘ It’s Visual BXXsic!
Debug.Print Replace(“It’s Visual Basic!”,”a”,”XX”,,1) ‘ It’s VisuXXl Basic!
Debug.Print Replace(“It’s Visual Basic!”,”A”,”XX”) ‘ It’s Visual Basic!
Debug.Print Replace(“It’s Visual Basic!”,”A”,”XX”,,,vbTextCompare) ‘ It’s VisuXXl BXXsic!

133. Reset هم ی فایل های باز شده رو میبنده.

134. RGB سه مولفه ی قرمز و سبز و آبیه یک رنگ رو میگیره و اون رو برمیگردونه(از نوع Long) مثلا برای رنگ قرمز : (RGB(255,0,0 و یا برای زرد (RGB(255, 255, 0
در ضمن هر آرگومان باید بین 0 تا 255 باشه.

135. Right (و $Right) برعکس Left عمل میکنه یعنی یه تعداد کاراکتر از سمت راست یک رشته جدا میکنه.

135. RightB (و $RightB) یک رشته رو میگیره و به تعداد دلخواه بایت از سمت راست جدا میکنه.مثلا ”LeftB("Visual", 2)=”l چون هر کاراکتر 2 بایت حساب میشه.

136. RmDir یک دایرکتوری رو حذف میکنه.توی اون دایرکتوری نباید فولدر یا فایل دیگه ای باشه.

137. Rnd یک عدد تصادفی بین 0 تا 1 (0,1] با سه رقم اعشار از نوع Single برمیگردونه مثلا 0.492

138. Round برای یک عدد اعشاری تعداد اعشار دلخواه رو نگه میداره و بقیه رو حذف میکنه.مثلا Round(1.2345,2) = 1.23 اینجا 2 تا از ارقام اعشار نگه داشته شدن.

139. RTrim (و $RTrim) یه رشته میگیره و هرچی Space سمت راست رشته باشه رو حذف میکنه و رشته ی جدید رو برمیگردونه مثلا :
Debug.Print “ Visual Basic “ ‘ = “ Visual Basic“

140. SavePicture یک عکس رو میگیره و اون رو توی یک فایل ذخیره میکنه(با فرمت Bitmap) اون عکس میتونه یک Picture یا Image رسم شده ی یک فرم یا Picture Box باشه.
پنج شنبه بیست و ششم 10 1387
101. LoadResString هم واسه لود کردن یه Resource رشته هستش.فقط هم آیدی رو نیاز داره.

102. Loc با گرفتن شماره فایل باز شده برای حالت Randomشماره آخرین رکوردی که نوشته یا خونده شده ، برای حالت Binary مکان آخرین بایتی از فایل(Position) که خونده یا نوشته شده و برای ترتیبی مکان بایت فعلی در فایل تقسیم بر 128 رو برمیگردونه.

103. LOF با گرفتن شماره فایل باز شده طول اون رو برمیگردونه.

104. Log تابع لگاریتم هستش البته در مبنای Ln .برای بدست آوردن لگاریتم یک عدد توی مبنای دلخواه از این فرمول استفاده کنین :

Log(x) / Log(n)

مثلا لگاریتم 8 در مبنای 2 :

Debug.Print Log(8)/Log(2) ‘3

105. LTrim (و LTrim$) یه رشته میگیره و هرچی Space سمت چپ رشته باشه رو حذف میکنه و رشته ی جدید رو برمیگردونه مثلا :

Debug.Print “ Visual Basic “ ‘ = “Visual Basic “

106. Mid (و$Mid) واسه جدا کردن یک قسمت از یک رشته هستش.آرگومان اول رشته ی مورد نظره.دومی عددی که جدا کردن از اونجا شروع میشه و سومی هم طول قسمتیه که میخواهیم جدا کنیم و اگه مقدار دهی نکنیمش تابع تا آخر رشته رو در نظر میگیره:

Debug.Print Mid(“Visual Basic”,3,2) ‘su
Debug.Print Mid(“Visual Basic”,3) ‘sual Basic

107. MidB (و MidB$) مثل قبلیه فقط اطلاعات رو بایت به بایت در نظر میگیره و جدا میکنه (نه کاراکتر به کاراکتر).فرقش با Mid مثل فرق InStr با InStrB هستش.توی قسمت InStrB بیشتر در این باره توضیح دادم.

108. Minute یه زمان رو میگیره دقیقه رو ازش جدا میکنه.مثلا (”Minute(“02:15:00برابر 15 هستش.

109. MIRR

110. MkDir واسه درست کردن یه Folder به کار میره که اگه از قبل وجود داشته باشه تابع Error میده.

111. Month یه تاریخ میگیره و ماه رو از اون استخراج میکنه.(به طور عددی البته) مثلا Month(Date()) = 5

112. MonthName عدد یک ماه رو میگیره (1 تا 12) و اسم اون ماه رو برمیگردونه.اگه آرگومان دومش True باشه اسم رو به صورت خلاصه برمیگردونه.مثلا MonthName(10) = Octobr و MonthName(10,True) = Oct

113. Move واسه حرکت دادن فرم توی صفحه بکار میره آرگوما هاش هم مشخص هستن.

114. MsgBox هم یه پیغام توی صفحه نشون میده.آرگومان اول اجباریه و متن اون پیغام هستش.آرگومان بعدی هم مربوط به Options نشون دادن پیغام مثلا نوع آیکن(vbCritical vbExclamation vbInformation vbQuestion) نوع دکمه ها (vbOKCancel vbYesNoCancel vbOKOnly vbAbortRetryIgnore vbRetryCancel vbYesNo vbMsgBoxHelpButton) دکمه های پیشفرض (که Focus بشون داده میشه)

تغییر vbMsgBoxRight vbMsgBoxRtlReading) Alignment) نحوه ی نمایش توی صفحه (vbSystemModal vbApplicationModal) هستش.
آرگومان بعدی عنوان پیغام هستش.بعدی فایل Help مربوط به این پیغام.بعدی هم Context موضوع مورد نظره(توی فایل Help)
مقدار برگشتی تابع هم با توجه به دکمه ای که کاربر فشار داده یکی از مقدار های vbAbort vbRetry vbIgnore vbCancel vbOK vbYes vbNo هستش.

115. NPer

116. NPV

117. Oct (وOct$ ) عدد رو به مبنای هشت میبره مثلا Oct(8) = 10

118. OLEDrag واسه شروع عمل OLE Drag (مثلا مثل وقتی که یکسری فایل رو یک فولد به فولدر دیگه میکشین) برای فرم بکار میره.اگه قبلش از اسم یه شیی دیگه مثلا یه لیست باکس استفاده کرده باشین –مسلما- عمل واسه اون شی انجام میشه منظورم اینه که این فقط مختص فرم نیست.2 تا فرم بسازین.توی دومی 1 تکست باکس درست کنین خصوصیت OLEDropMode مربوط به TextBox رو Manual قرار بدین.توی فرم اول کد زیر رو وارد کنین :

Private Sub Form_Load()
Form2.Show
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
OLEDrag
End Sub

Private Sub Form_OLECompleteDrag(Effect As Long)
MsgBox "Drag completed!"
End Sub

Private Sub Form_OLEStartDrag(Data As DataObject, AllowedEffects As Long)
AllowedEffects = vbDropEffectMove
Data.SetData Me.Caption
End Sub

و توی دومی :

Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Data.GetFormat(vbCFText) Then
Text1.Text = Data.GetData(vbCFText)
End If
End Sub

وقتی فرم یک Load میشه فرم 2 هم نشون داده میشه.حالا اگه موس رو روی فرم 1 فشار بدین OLEDrag برای فرم فراخوانی میشه و رویداد OLECompleteDrag اتفاق میفته.طبق کد حالت قابل قبول فقط vbDropEffect)Move) در نظر گرفته میشه.و اطلاعاتی هم که باید از فرم به جای مقصد انتقال پیدا کنه برابر با متن فرم میشه که هر چیزه دیگه ای با فرمت دیگه ای مثل یه فایل هم میتونه باشه.وقتی بدون اینکه دکمه ی موس رو رها کنین اون رو روی TextBox فرم دوم ببرین رویداد OLEDragDrop برای TextBox اتفاق میفته.بعد چک میشه که اگه فرمت اطلاعات متنی بود اطلاعات توی TextBox نشون داده بشه.بعد از رها کردن دکمه ی موس رویداد OLECompleteDrag (تومو شده عمل کشیدن) برای فرم اتفاق میفته و یک پیغام نشون داده میشه.

119. PaintPicture واسه رسم کردن یه عکس روی فرم هست.این تابع مال PictureBox هم هست.
آرگومان اول عکسیه که باید رسم بشه که میتونه عکسی باشه که با LoadPicture لود شده.یا عکس توی یک PictureBox(مثلا Picture1.Picture) .آرگومان دوم و سوم مختصات بالا سمت چپ جایی هستن که قرار عکس اونجا رسم بشه.مثلا اگه 0و0 باشن عکس کاملا توی بالا و سمت چپ فرم قرار میگیره یا اگه 100و20 باشن عکس با سمت چپ فرم 100 و با بالای فرم 20 تا (واحدش بر اساس واحد فرم هستش بطور پیشفرض Twip ) آرگومان های بعدی طول و عرض عکسی هستن که قرار چاپ بشه.اگه مقدار دهیشون نکنین عکس با اندازه ی اصلیش چاپ میشه.دو تا آرگومان بعدی جایی از عکس هستن که عمل رسم شدن باید از اونجا شروع بشه که اگه مثلا 100و100 باشن همه ی عکس روی فرم رسم نمیشه و از عمل رسم از بالا و سمت چپ فرم با مختصات 100و100 شروع میشه . دو تا آرگومان بعدی هم مثل قبلی واسه جدا کردن قسمتی از عکس هستن.این ها طول و عرضی از عکس رو مشخص میکنن که قرار رسم بشه.مثل قبلی ها اگه مقدار دهیشون نکنین (با توجه به 2 تا آرگومان قبلی) همه ی قسمت ها در نظر گرفته میشه.آرگومان آخر هم نحوه ی رسم هست(از نظر رنگ) که میتونه یکی از مقدار های زیر باشه :
vbSrcCopy عکس جدید رو کاملا جایگزین عکس قبلی میکنه یعنی اگه از قبل توی فرم عکسی وجود داشته باشه هیچ
اثری ازش نمیمونه.
vbSrcAnd عکس مبدا و مقصد(در صورت وجود) رو AND میکنه (دو عکس ادغام میشن)
vbNotSrcErase عکس و مبدا و مقصد(در صورت وجود) رو OR میکنه و نتیجه رو Invert میکنه.
vbSrcPaint عکس مبدا و مقصد(در صورت وجود) رو OR میکنه.
vbDstInvert عکس مقصد (در صورت وجود) رو Invert میکنه.
vbSrcInvert عکس مبدا و مقصد(در صورت وجود) رو XOR میکنه.
vbSrcErase عکس مقصد(در صورت وجود) رو Invert (معکوس) میکنه و با عکس مبدا AND میکنه.
vbNotSrcCopy عکس مبدا رو Invert میکنه و کاملا جایگزین عکس مقصد میکنه.

برای اینکه بهتر متوجه بشین همه رو امتحان کنین.

120. Partition چهار تا عدد به عنوان شروع(Start) ،پایان(Stop) فاصله(Intrerval) و عدد مورد نظر(Number) میگیره و یک سیری از اعداد به صورت

Start + (n-1) * Interval تا Start + n * Interval -1 …………… Start + (n-1) * Interval تا Stop

تا رسیدن به مقدار Stop میسازه.مثلا اگه Start=1 , Stop=110 ,Interval=20 اینطوری میشه :

1…20 21…40 41…60 61…80 81…100 101…110

حالا تابع عددی که بش دادیم(Number) رو بررسی میکنه که جزو کدوم یک از این بازه ها(بازه های بسته) هستش.جزو هر کدوم که بود تابع یه رشته به صورت بالاترین عضو : پایین ترین عضو برمیگردونه.مثلا اگه عدد 52 یا 60 باشه تابع مقدار “41:60” رو برمیگردونه.اگه عددی که بش میدیم کمتر از کمترین عضو سری باشه تابع مقدار “ : [Start -1] ” رو برمیگردونه مثلا اینجا برای 3- تابع مقدار “ : 0 ” رو برمیگردونه و اگه بزرگ تر باشه “[Stop + 1] : ” رو برمیگردونه.
پنج شنبه بیست و ششم 10 1387
81. IsArray هم از اسمش پیداست.یک متغیر میگیره و مشخص میکنه آرایه هست یا نه.

82. IsDate هم مثل قبلیه فقط برای تاریخ یا زمان.

83. IsEmpty برای اینه که چک کنیم یک مقدار اعلان شده یا نه.مثلا

Dim x as long
Debug.Print IsEmpty(x) ‘False
Debug.Print IsEmpty(y) ‘True
x = Empty
Debug.Print IsEmpty(x) ‘True

84. IsError هم واسه اینه که چک کنیم یه مقدار از نوع Error هستش یه یا نه.مثلا IsError(Err) = True یا IsError(CVErr(0))= True

85. IsMissing این تابع برای وقتی به کار میره که شما توی یه Function یا Sub که آرگومان اختیاری(Optional)از نوع Variant داره میخواهین ببینین که اون آرگومان مقدار دهی شده یا نه.این مثال رو ببینین:

Private Sub Command1_Click()
MsgBox TestIsMissingFunc()
MsgBox TestIsMissingFunc(2)
MsgBox TestIsMissingFunc(“A”)
End Sub

Private Function TestIsMissingFunc(Optional testArg As Variant) As String
If IsMissing(testArg) Then
TestIsMissingFunc = “You are not passed any value!”
Else
TestIsMissingFunc = “You are passed “ & CStr(testArg)
End If
End Function

مقدارهایی که با پیغام نشون داده میشن به این صورته :

You are not passed any value
You are passed 2
Your are passed A

یعنی اگه اون پارامتر اختیاری مقدار دهی نشده باشه تابع IsMissing مقدار True رو برمیگردونه.اگه پارامتری از نوع غیر از Variant بهش بدین همواره مقدار False رو برمیگردونه.

86. IsNull واسه اینه که بفهمیم یک مقدارNull هست یا نه. توجه کنین که Null با خالی بودن یه رشته یا 0 بودن یه عدد فرق داره.مثلا

Deug.Print IsNull(“”) ‘false
Dim S As String
Debug.Print IsNull(S) ‘false
S = “”
Debug.Print IsNull(S) ‘false
S = Null
Debug.Print IsNull(S) ‘True

87. IsNumeric چک میکنه که یه مقدار عدد هست یا نه .البته کاری به نوعش نداره و محتویاتش رو بررسی میکنه مثلا:

Debug.Print IsNumeric(2) ‘true
Debug.Print IsNumeric("2.2") ‘true
Dim v As Variant
v = "$2.2"
Debug.Print IsNumeric(v) ‘true
v = “vb6”
Debug.Print IsNumeric(v) ‘false

88. IsObject هم چک میکنه یه مقدار از نوع Object هستش یا نه مثلا :

Private Sub Command1_Click()
Debug.Print IsObject(Command1) ‘true
Debug.Print IsObject(Err) ‘true
Dim Obj As Object, v As Variant
Debug.Print IsObject(Obj) ‘true
Debug.Print IsObject(v) ‘false
Set v = Err
Debug.Print IsObject(v) ‘true
Debug.Print IsObject("s") ‘false
End Sub

89. Join یه آرایه از نوع رشته میگیره و همه مقدار های عضو های آرایه رو به هم متصل میکنه و به صورت یه متغیر از نوع رشته بیرون میده.بین هر کدوم از String ها رو هم با کاراکتر دلخواهی که بهش میدیم قرار میده(بطور پیشفرض فاصله)
مثلا :

Private Sub Command1_Click()
Dim words(3)
words(0) = "Learning"
words(1) = "VB"
words(2) = "is"
words(3) = "easy"
Debug.Print Join(words, "_") ‘ Learning_VB_is_Easy
End Sub

90. Kill آدرس یه فایل رو میگیره و اون رو پاک میکنه.

91. LCase (و LCase$) (مخففLower Case)یک رشته رو میگیره و همه حروف رو به حروف کوچک تبدیل میکنه و رشته جدید رو برمیگردونه مثلا ”LCase(“Visual”)=”visual

92. Left (وLeft$)یک رشته رو میگیره و به تعداد دلخواه کاراکتر از سمت چپ جدا میکنه مثلا :

Left("Visual",2) = "Vi"

93. LeftB (و LeftB$) یک رشته رو میگیره و به تعداد دلخواه بایت از سمت چپ جدا میکنه.مثلا

LeftB("Visual", 2)="V"

چون هر کاراکتر 2 بایت حساب میشه.

94. Len یه مقدار میگیره و طولش رو برمیگردونه.برای رشته تعداد کاراکتر ها رو . برای متغیر عددی هم تعداد بایتی که متغیری که عدد رو شامل میشه اشغال کرده رو برمیگردونه نه تعداد ارقام رو(مگر اینکه قبلش عدد رو به رشته تبدیل کنین) مثلا :

Debug.Print Len("visual") ‘8
Dim n As Integer: n = 245
Debug.Print Len(n) ‘2
Debug.Print Len(CStr(n)) ‘3

Dim V As Variant
Debug.Print Len(V) ‘0
Set V = Command1
Debug.Print Len(V) ‘4

95. LenB تعداد بایتی که یه متغیر(یا یک مقدار) اشغال کرده رو برمیگردونه.مثلا :

Debug.Print LenB("visual") ‘12
Dim n As Integer: n = 245
Debug.Print LenB(n) ‘2
Debug.Print LenB(CStr(n)) ‘6
Dim V As Variant
Debug.Print LenB(V) ‘0
Set V = Command1
Debug.Print LenB(V) ‘8

96. Line واسه رسم یه خط یا مستطیل روی فرم بکار میره.آرگومان اول مختصات نقطه شروع و پایان خط و یا مختصات بالا سمت چپ و پایین سمت راست مستطیل هستش.بعدی رنگ خط و مستطیل هستش.بعدی اگه B باشه مستطیل رسم میشه.اگه BF باشه مستطیل توپر رسم میشه.اگه هم مقدار دهی نکنینش خط رسم میشه.مثلا :

Line (0, 0)-(300, 300), vbRed, BF ‘مستطیل توپر قرمز
Line (0, 0)-(300, 300), vbRed ‘خط قرمز

97. Load یه فرم یا Control رو توی حافظه Load میکنه.

98. LoadPicture یک عکس رو توی حافظه Load میکنه و مشخصات اون رو توی یک متغیر از نوع IPictureDisp برمیگردونه.اگه آرگومان اول رشته ی خالی باشه تابع یه عکس خالی برمیگردونه.آرگومان های بعدی فقط برای فایل های آیکن و کرسر هستن:دومی سایز هستش.که یکی از مقدار های زیر میتونه باشه :
vbLPLarge که اندازه آیکن یا کرسر برابر اندازه آیکن یا کرسر بزرگ پیشفرض سیستم میشه.
vbLPSmall که اندازه آیکن یا کرسر برابر اندازه آیکن یا کرسر کوچک پیشفرض سیستم میشه.
vbLPSmallShell اندازه ایه که توی قسمت Caption Buttons size setting توی قسمت AppearRance مربوط بهDisplay propertiesتنظیم شده.
vbLPLargShell اندازه ایه که توی قسمت Icon size setting توی قسمت AppearRance مربوط بهDisplay properties تنظیم شده.
vbLPCustom اندازه بر اساس 2 تا آرگومان x و y تنظیم میشه.

آرگومان بعدی (ColorDepth) عمق رنگ هستش که یکی از مقدار های زیر میتونه باشه :
vbLPDefault مقدار پیشفرض هستش.

vbLPMonochromeدو رنگ
vbLPVGAColorشونزده رنگ
vbLPColor دویست و پنجاه وشش رنگ

2 تا آرگومان بعدی هم طول و عرض هستن.که فقط برای وقتی که آرگومان size برابر vbLPCustom باشه استفاده دارن.
یکباره دیگه هم بگم که آرگومان های 2 به بعد این تابع فقط واسه فایل های آیکون و کرسر هستن.

99. LoadResData اآیدی یک Resouce و نوع اون رو میگیره و اطلاعاتش رو برمیگردونه.مثلا (”LoadResData(101,”CUSTOM
واسه ویرایش Resource های برنامه از منوی Add-Ins گزینه ی Add-In Manager رو انتخاب کنین.اونجا توی لیست روی VB6 Resource Editor کلیک کنین تا جلوش متن Loaded بیاد.OK کنین تا پنجره بسته شه.حالا از منوی Tools گزینه ی Resouce Editor رو انتخاب کنین.توی پنجره ای که باز میشه میتونین Resource های مختلف برای برنامتون بسازین...

100. LoadResPicture مثل قبلیه منتها واسه Load کردن Picture هستش.چه Icon چه Bitmap و چه Cursor . آرگومان اولیش آیدی Resource هستش .دومی هم یکی از سه نوعی که گفتم یعنی vbResBitmap ، vbResIcon و vbRescCursor .مقداری برگشتیش هم از نوع Picture هستش(IPictureDisp)
پنج شنبه بیست و ششم 10 1387
 مثل قبلیه هست با این فرق که درصد عددی که بهش میدیم رو حساب میکنه.مثلا :

FormatPercent(-10 / 100, 4, vbFalse, vbFalse, vbFalse) = -10.0000%

FreeFile .62 اولین شماره ای که برای باز کردن فایل ها آماده باشه (آزاد باشه) رو برمیگردونه.حداکثر هم 255 فایل میتونن باز باشن.

FV .63

GetAllSettings .64 این تابع همه ی تنظیماتی که توی Section و appName ی که بش میدیم ذخیره شده رو به صورت یه آرایه 2 بعدی برمیگردونه.(بهتره اول SaveSetting رو ببینین) ما این مقدار رو توی یه متغیر از نوع Variant قرار میدیم.به طوری که (v(0,0 اسم اولین تنظیممون(یا همون اسم Value توی رجیستری یا همون Key توی تابع SaveSetting) هستش و (v(0,1 مقدار اون تنظیم.به همین ترتیب v(1,0) هم اسم دومین تنظیم میشه... .

GetAttr .65 هم با گرفتن آدرس فایل Attribute های اون فایل رو برمیگردونه.

GetObject .66 شبیه CreateObject کار میکنه با این فرق که نام فایل رو هم میتونه بگیره و معمولا برای ارتباط با برنامه هایی بکار میره که از قبل اجرا شدن ولی CreateObject یه رابط به instance جدید اون Application ایجاد میکنه و وقتی استفاده میشه که نمیدونیم برنامه از قبل اجرا شده یا نه.مثلا میخواهیم یه شی word رو با CreateObject درست کنیم :

Private Sub Command1_Click()
Dim wApp As Object,wDoc as Object
Set wApp = CreateObject("word.application")
Set wDoc = wApp.Documents.Add
wApp.Selection.Font.Name = "verdana"
wApp.Selection.TypeText "Hello!!"
wDoc.SaveAs "D:\w1.doc"
wDoc.Close
Set wDoc = Nothing
Set wApp = Nothing
End Sub

با این کد فایل w1.doc توی درایو ِD ساخته میشه که محتویایش متن Hello!! هستش.به جای CreateObject میشد از GetObject به این صورت استفاده کرد :

Set wApp = GetObject(, "word.application")

چون میخواستیم فایل جدیدی ایجاد کنیم نیاز به دادن آدرس فایل نبود واسه همین فقط آرگومان دوم رو مقدار دهی کردیم.
حالا میخواهیم توی فایلی که درست کردیم یه متن تایپ کنیم.اول اون فایل رو با word باز کنین .اینبار از GetObject استفاده میکنیم :

Private Sub Command1_Click()
Dim wApp As Object
Set wApp = CreateObject("D:\w1.doc").Application
wApp.Documents(1).Application.Selection.TypeText " how are you ?"
Set wApp = Nothing
End Sub

به این صورت ما تونستیم با GetObject با برنامه Word ارتباط برقرار کنیم.

GetSetting .67 با گرفتن appName و Section و Key ، اطلاعاتی رو که با تابع SaveSetting توی رجیستری ذخیره شده رو برمیگردونه(به توضیح SaveSetting توجه کنین) آرگومان چهارم هم مقداریه که اگه اطلاعات مورد نظر توی رجیستری پیدا نشد تابع اون رو برمیگردونه.

Hex .69 (و Hex$) هم با گرفتن یک عدد معادل اون رو به مبنای 16 برمیگردونه مثلا Hex(255) = “FF”

70. Hide فرم رو پنهان میکنه و واسه نشون دادنش باید از Show استفاده کنین (این تابع ها هر دو عضو های Form هستن و اگه توی یه ماژول یا کلاس دارین کد مینویسین باید اسم فرم مورد نظر رو هم بیارین مثلا ()Form1.Hide)

71. Hour زمان رو میگره و ساعت رو از اون استخراج میکنه .مثلا Hour ("19:12:03") = 19

72. IIf یک If…Then…Else یک خطی هستش.آرگومان اول همون عبارتیه که میخواهیم درستیش رو بررسی کنیم.آرگومان دوم و سوم هم مقدار های بازگشتیه تابع هستش.اگه عبارتی که به تابع دادیم درست باشه آرگومان دوم و گرنه آرگومان سوم رو برمیگردونه.مثلا

IIf(2+2 = 4, "Yes", "No") = "Yes"

73. IMEStatus توی ویبی 6 وضعیت Input Method Editor رو برمیگردونه که فقط توی ویندوز های چینی و کره ای و ژاپنی کاربرد داره.

74. InputBox یه Input Box یا همون Prompt رو باز میکنه و یه ورودی از کاربر میگیره.آرگومان اول اون متنی هستش که توی Prompt نشون داده میشه و حتما باید مقدار دهی بشه ولی آرگومان های بعدی اختیاری هستن.
دومی Title یا همون عنوان پنجره Prompt هستش.سومی هم متنیه که به طور پیشفرض توی TextBox ی که توی InputBox هست نمایش داده میشه.2 تا آرگومان بعدی هم مختصات پنجره InputBox هستن.آرگومان بعدی (HelpFile) فایل Help ی که مربوط به این InputBox هستش.بعدی هم Context اون موضوعیه که میخواهین نشون بدین.مقدار برگشتی تابع همون مقداریه که کاربر وارد میکنه اگر هم کاربر Cancel رو بزنه مقدار برگشتی یه رشته خالیه (vbNullString).

75. InStr برای جستجوی یک متن توی یک متن دیگه بکار میره.آرگومان اول جاییه که جستجو توی رشته از اونجا شروع میشه. اگه 1 بگذارین جستجو از اولین کاراکتر شروع میشه میتونین هم مقداری به این آرگومان ندین.دومی رشته ی مبدا هستش یعنی رشته ای که میخواهین توش جستجو کنین.آرگومان بعدی رشته مقصد هست یعنی اون متن ی که میخواهین جستجوش کنین.آرگومان بعدی هم نوع مقایسه هستش.اگه از vbBinaryCompare استفاده کنین بین حروف کوچک و بزرگ تفاوت گذاشته میشه و اون ها مساوی حساب نمیشن (Case Sensitive) اگه از vbTextCompare استفاده کنین حروف بزرگ و کوچک یکی حساب میشن. vbDatabaseCompare هم مربوط به Access هستش و کاری بهش نداریم.مثلا InStr(1,”Visual Basic”,”b”,vbTextCompare) مقدار هشت رو برمیگردونه در صورتی که اگه از vbBinaryCompare استفاده کنین یا اصلا این آرگومان رو مقدار دهی نکنین مقدار 0 نشون داده میشه.یعنی رشته ی مورد نظر پیدا نشد! یا مثلا اگه به جای 1 از 9 استفاده کنین جستجو از حرف نهم یعنی a شروع میشه و چون حرف b بعد از a (منظور دومین a هستش که بعد از b قرار داره) قرار نداره تابع b رو پیدا نمیکنه و مقدار 0 رو برمیگردونه.

این رو هم بگم که ویبی به طور پیشفرض Case Sensitive هستش و حروف بزرگ و کوچک مساوی نیستن یعنی “VB” <> “Vb” اما اگه کد Option Compare Text رو اول کدها(بالای فرم یا ماژول) بزارین این حساسیت ویبی از بین میره.

76. InStrB مثل قبلیه با این فرق که واسه داد های بایتی که توی یک رشته قرار گرفتن استفاده میشه و محل بایت (Byte Position)رو برمیگردونه.مثلا چون یه کاراکتر توی رشته ی معمولی 2 بایت حساب میشه (از لحاظ طول رشته ای 1 هست اما از لحاظ طول بایت 2) مقدار (”InStrB(1,”Visual Basic”,”B برابر 15 هستش.

77. InStrRev مثل InStr هستش با این فرق که جستجو رو از آخرین کاراکتر رشته ی که بش دیدیم شروع میکنه و به اولین کاراکتر میرسه.(برعکس قبلی)آرگومان اول رشته مبدا دومی رشته ی مقصد و سومی هم شروع جستجو هست که به طور پیشفرض -1 هستش یعنی جستجو از آخرین کاراکتر.آرگومان بعدی هم مثل آرگومان آخر InStr.مثلا (”InStrRev(“VisualBasic”,”a برابر 8 هستش نه 5.ولی ( InStrRev("VisualBasic", "a", 7 برابر 5 هستش چون جستجو از حرف B شروع میشه و به سمت اولین کاراکتر میره.

78. Int براکت یک عدد رو برمیگردونه.مثلا Int(2.2) = 2 و Int(-2.2) = -3

79. IPmt

80. IRR
پنج شنبه بیست و ششم 10 1387
Day .41 روز یک تاریخ رو برمیگردونه.مثلا (Day(Now عدد 5 رو برمیگردونه.

DDB .42

DeleteSetting .43 تنظیماتی که با تابع SaveSetting توی رجستری ذخیره شده (value ها)رو پاک میکنه.واسه توضیح بیشتر به SaveSetting مراجع کنین.

Dir .44 فایل ها و فولدر های داخل یه فولدر(یا درایو) رو برمیگردونه.که میشه با مشخص کردن Attribute فایل ها یا فولدر های خاص رو بدست آورد.آرگومانی که میگیره یه رشتس که Path مورد نظر هستش که میشه توش از کاراکتر هایی مثل * و ؟ هم استفاده کرد.
مثلا میخوامیم همه ی فایل های با پسوند .sys رو که توی درایو C هستن بدست بیاریم.
برای اولین بار تابع Dir رو با دادن مقدار “C:\*.sys” فراخوانی میکنیم.مقدار برگشتیش اولین فایل با پسوند bat هست که توی درایو C (فقط درایو C یعنی شامل SubDirectory ها نمیشه) پیدا میکنه.برای بدست آوردن دومین فایل تابع رو بدون دادن مقدار بهش فراخوانی میکنیم ()Dir که مقدار برگشتیش همون دومین فایل هستش.این کار رو تا زمانی که مقدار برگشتی "" (رشته ی خالی) نباشه ادامه میدیم.کدش به این صورت میشه:

Private Sub CmdPrintDirs_Click()
Dim strPath as String,strDir as String
strPath = "C:\*.sys"
strDir = Dir(strPath)
Do
Print strDir
strDir = Dir()
Loop While strDir <> ""
End Sub

البته اگه Attribute رو درست تعیین نکنین همه فولدر ها و فایل ها برگردونده نمیشن.مثلا با قرار دادن این مقدار :
vbArchive Or vbDirectory Or vbHidden Or vbNormal Or vbReadOnly Or vbSystem
به جای Attribute میشه گفت همه فایل ها و فلدر ها (چه سیستم چه معمولی و...) برگردونده میشن.برای بدست آوردن فقط Directory ها به این صورت عمل کنین که به Attribute ، vbDirectoy رو هم اضافه کنین. بعد از اینکه اسم دایرکتوری ها رو گفتین باز هم با تابع GetAttr چک کنین که اسمی که برگردونده شده حتما Directory هستش :

Private Sub CmdPrintDirs_Click()
Dim strPath As String, strDir As String
strPath = "C:\"
strDir = Dir(strPath, vbDirectory)
Do
If (GetAttr(strPath & strDir) And vbDirectory) = vbDirectory Then
Print strDir
End If
strDir = Dir()
Loop While strDir <> ""
End Sub

اینو نگفتم که اگه بعد از مسیری که مشخص کردین اینجا (\:c) چیزی نگذارین همه فایل ها و فولدر هاش در نظر گرفته میشن.

DoEvents .45 این تابع رو وقتی دارین توی برنامتون از یک حلقه تکرار که ممکنه تموم شدنش طول بکشه استفاده میکنین توی حلقه فراخوانی کنین.حالا چکار میکنه؟
بطور عادی وقتی دارین توی یه حلقه تکرار(یا هر کدی!!) یکسری محاسبات رو انجام میدین تا زمانی که حلقه تموم نشه برنامتون در مقابل Message هایی که بش ارسال میشه عکس العملی انجام نمیده و همه عکس العمل ها رو بعد از تموم شدن حلقه انجام میده و یا اگه شما توی حلقه یه کدمربوط به چاپ کردن یه رشته روی فرم رو نوشته باشین عمل چاپ شدن رو بعد از تمام شدن حلقه مشاهده میکنین.به قولی تا زمان پایان حلقه برنامه هیچ Event ی انجام نمیده(البته این مساله 100 در 100 هم نیست).تابع DoEvents این کار رو براتون میکنه.این دو کد رو تست کنین :

Private Sub Command1_Click()
Dim i As Long
Do While i < 10000000
i = i + 1
If i < 20 Then List1.AddItem i
Loop
End Sub
Private Sub Command1_Click()
Dim i As Long
Do While i < 10000000
i = i + 1
If i < 20 Then List1.AddItem i
DoEvents
Loop
End Sub

وقتی دکمه رو توی کد اول فشار میدین تا زمانی که حلقه تموم نشده نمیتونین اعضای اضافه شده رو توی لیست باکس ببینین یا فرم رو حرکت بدین.در صورتی که در کد دوم این طور نیست.

46. Environ (و Environ$) این تابع با گرفتن عدد ها(اینجا index ها) ی بیشتر از 0 و یا رشته ها اطلاعات خاصی از سیستم مثل دایرکتوری ویندوز Program Files ، Temp و یا UserName یا تعداد پردازشگر ها و ... رو برمیگردونه.با دادن عدد های مختلف از 1 به بالا مقدار های مختلفش رو میتونین ببینین.رشته هایی رو هم میگیره مثل WinDir یا OS یا SystemDrive یا ... که این رشته ها رو با استفاده از اعداد میتونین بدست بیارین :

Private Sub Command1_Click()
Dim strEv As String, i As Integer
i = 1
Do
strEv = Environ(i)
Print strEv
i = i + 1
Loop While strEv <> ""
End Sub

EOF .47 برای کار با فایل هاست که با دادن شماره ای که باهاش فایل رو باز کردین میتونین بفهمین به آخر فایل رسیدین یا نه.

Err .48 آبجکتیه که اطلاعات مربوط به آخرین خطایی(منظور Runtime Error) که توی کد اتفاق افتاده رو نگه میداده.مثلا :
Err.Number شماره خطا Err.Clear پاک کردن خطا (همه اطلاعات در مورد آخرین حذف میشه و فرض بر این میشه که خطایی اتفاق نیفتاده باشه) Err.Description توضیح خطا Err.Source منبع خطا.Err.Raise هم یه خطا تولید میکنه!!

Error .49 اگه این تابع رو برابر یه مقدار قرار نداره باشین کار Err.Raise رو میکنه با این فرق که فقط شماره خطا رو میگیره(به تعداد آرگومان هایی که میگیرن توجه کنین) (در این حالت میشه گفت اصلا تابع نیست!) در غیر این صورت توضیح خطایی که تولید کرده رو هم برمیگردونه

Error$ .50 فقط حالت دوم Error هستش

Exp .51 معادلش توی ریاضی e x

FileAttr .52 با گرفتن شماره ای که فایل باش باز شده Attribute هاش رو برمیگردونه.مثلا :

Private Sub Command1_Click()
Open "C:\io.sys" For Random As #1
If FileAttr(1) And vbSystem Then
MsgBox "This is a Syetem file!"
End If
Close #1
End Sub

FileCopy .53 واسه کپی کردن فایل هستش که آرگومان اولی آدرس فایل مبدا و بعدی مقصده.اگه فایل مقصد وجود داشته باشه عمل کپی انجام نمیشه.

FileDateTime آدرس یه فایل رو میگیره و زمان آخرین ویرایش یا زمانی که درست شده رو برمیگردونه.

FileLen .54 آدرس یه فایل رو میگیره و طولش رو برمیگردونه.(به بایت)

Fix .55 یه چیزی شبیه تابع براکت توی ریاضی هستش با این فرض که اعداد منفی رو رو به بالا گرد میکنه .مثلا:

Fix(2.1) = 2 و Fix(-2.1) = -2

Filter .56 یه آرایه رشته ای میگیره و آرایه ی جدیدی رو برمیگردونه به طوری که اون آرایه شامل عضو هایی از آرایه ی اول میشه که یک رشته ی خاص رو دارا هستن یا دارا نیستن.(تابع 2 حالت داره).آرگومان اول آرایه مورد نظره.دومی رشته ی مورد نظره.سومی اگه False باشه اون عضو هایی که شامل رشته نیستن انتخاب میشن و برگردونده میشن و اگه True باشه عضو هایی که شامل رشته هستن.بعدی هم نوع مقایسه هست که توی توضیح تابع InStr درموردش توضیح دادم.اونجا رو ببینین.
مثلا این آرایه رو تصور کنین :

Dim MainArr(3) As String
MainArr(0) = “Visual Basic”
MainArr(1) = “Visual C++”
MainArr(2) = “W32 Assembly”
MainArr(3) = “Java Script”

حالا ما میخوایم همه ی اون عضو هایی از MainArr که کلمه ی Visual داخلشون نیست رو توی یک آرایه دیگه ذخیره کنیم :

Dim NewArr() As String
NewArr = Filter(MainArr,”Visual”,False)

با این کد عضو های آرایه NewArr ، W32 Assembly و Java Script میشن.اگه به جای False از True استفاده میکردین عضو ها Visual Basic و++ Visual C میشدن.

Format .57 (و Format$)یه تابع پر کاربرده که کارهای زیادی در رابطه با رشته ها میکنه و اگه بخوام همشونو بگم به اندازه ای که تاحالا نوشتم باید بنویسم!!در کل یه رشته به عنوان آرگومان اول میگیره.دومی هم یه رشتس که Style یا حالت یا همون فرمت اون رشته رو تعیین میکنه .مثلا میخواهین با داشتن ثانیه – دقیقه و ساعت،زمان رو با فرمت درست بدست بیارین :

MsgBox (Format("125802", "00:00:00"))

و کار های زیاد دیگه ای میشه باش کرد که بیشتر از این حال نداریم توضیح بدم.خودتون دنبالش برین میفهمین... .

FormatCurrency .58 این تابع یه عدد رو به نوع Currency (نوعی که توی ویبی برای نگه داشتن مقدار پول بکار میره) با فرمت دلخواه تبدیل میکنه.آرگومان اول عدد مورد نظره.آرگومان های بعدی اختیاری هستن: دومی تعداد صفرهایی که بعد از عدد و نقطه ی آخر اون نشون داده میشن هستش که بطور پیشفرض 1-(Default) هستش و برای من 2 تا نشون میده مثلا 100 رو 100.00 نشون میده.

آرگومان بعدی مشخص میکنه که برای عدد های کسری .0 قبل از عدد رو نشون بده یا نه.بعدی مشخص میکنه که برای عدد های منفی از پرانتز استفاده بشه یا نه.بعدی مشخص میکنه که عدد هارو (سه تا سه تا) با کاما گروه بندی کنه یا نه.مثلا 100000 رو 10,000 نشون بده یا نه.یه مثال کلی : FormatCurrency(10000,3,vbTrue,vbTrue,vbTrue)مقدار 10,000.000$ رو برمیگردونه.
این رو هم بگم که آرگومان های 3 ، 4 و 5 به غیر از vbTrue و vbFalse مقدار vbUseDefault رو هم میتونن بگیرن که این مقدار به مقدار بیشفرض که به تنظیم های ویندوز بستگی داره ارجاع میکنه.

FormatDateTime .59 این تابع واسه تغییر فرمت زمان و تاریخ به کار میره.آرگومان اول تاریخ یا زمان مورد نظره .دومی هم فرمت مورد نظر.مقدار بازگشتی با توجه به نوع فرمت و نوع مقداری که بش دادیم فرق میکنه :

FormatDateTime(Now(), vbGeneralDate) = 10/5/2005 10:49:07 PM

FormatNumber .60 مثل FormatCurreny هستش با 2 تا فرق.یکی اینکه علامت دلار ($) کنار عدد نمیگذاره. یکی دیگه اینکه اگه مقدار منفی باشه و آرگومان 3 False ، علامت منفی رو کنار عدد نشون میده.
پنج شنبه بیست و ششم 10 1387
اموزش توابع داخلی Visual Basic ( نزدیک به 180 تابع )
ChrW .21 (و ChrW$) واسه کاراکتر های Unicode استفاده میشه.یعنی کد یه کاراکتر Unicode (فکر کنم بین 0 تا 2 بتوان 16) رو میگیره و یه کاراکتر Unicode برمیگردونه

CInt .22 تبدیل نوع یه مقدار به Integer

Circle .23 واسه رسم یه دایره ، بیضی ، قطاع یا کمان روی فرم هستش.مثلا
Circle(20,20),10,vbred,0,3.141,2 یه کمان با مرکز 20و20 و با شعاع 10 با رنگ قرمز از 0 تا پی رو طوری رسم میکنه که ارتفاعش 2 برابر عرضش هستش.برای رسم قطاع باید ارگومان های 4 و 5 منفی باشن.واسه رسم دایر بعد از vbred نیاز نیست مقدار بزارین.واسه رسم بیضی(کامل) آرگومان های 4 و 5 رو مقدار ندین در عوض با تغییر دادن آرگومان 6 میتونین بیضی های مختلفی رسم کنین.

Clng .24 واسه تغییر نوع یه مقدار به Long هستش

Cls .25 مثل دستور معادلش توی داس هستش.یعنی فرم رو پاک میکنه.

Command .26 و Command$ اون پارامتر هایی که به برنامه ارسال شدن رو برمیگردونن.مثلا وقتی برنامه رو با دستور
Project1.exe “-hidden” باز کنیم Command برابر “hidden-” میشه.

Cos .27 کسینویس زاویه ای که –بر حسب رادیان – بهش میدیم رو برمیگردونه.

CreateObject .28با گرفتن ClassName یک شی رو درست میکنه.مثلا

Set fso = CreateObject("Scripting.FileSystemObject")

آبجکت معروف FSO رو دست میکنه که خیلی هم توی ASP کاربرد داره.حالا که این آبجکت رو ساختین میتونین ازش استفاده کنین.مثلا واسه بدست آوردن پوشه temp :

MsgBox fso.getspecialfolder(2)

بعد از اینکه کارمون با شی تموم شد باید حافظه ای که بش اختصاص پیدا کرده رو آزاد کنیم :

Set FSO = Nothing

CSng .29-30 و CStr واسه تبدیل نوع یه مقدار به Single و String هستن.

CDir .31 و CDir$ هم دایرکتوری پیشفرض رو برمیگردونن(واسه توضیح بیشتر یه سر به chDir بزنین)

CVar .32 واسه تبدیل نوع یه مقدار به Var هست

CVDate .33 واسه تبدیل یه مقدار(رشته یا عدد) به نوع Date بکار میره.

CVErr .34 یه شماره خطا یا یه آبجک از نوع ErrObject میگیره و یه مقدار از نوع Error برمیگردونه مثلا : “Cstr(CVErr(13)) = “Error 13
اما اینکه به چه درد میخوره نمیدونم.اینم توضیح : MSDN

The CVErr function in Visual Basic 6.0 returned a Variant of the subtype Error that contained an error number

DateAdd .35 واسه کم یا زیاد کردن یه مقدار از یه تاریخ یا ساعت بکار میره.آرگومان اولی نوع مقداری که میخواهیم کم یا زیاد کنیم هستش که باید یکی از اینا باشه : s ثانیه n دقیقه h ساعت w روزهای هفته w هفته d روز(مثل 12) y روز از سال(مثل 224) m ماه q یک چهارم سال(فصل) yyyy سال.آرگومان دومی مقداریه که میخواهیم اضافه یا کم کنیم مثل 2 1 ... .آرگومان بعدی زمان یا تاریخ مورد نظره.
مثلا (()DateAdd(“m”,3,Date سه ماه به تاریخ فعلی(()Date) اضافه میکنه و تاریخ جدید رو برمیگردونه.

DateDiff .36 برای مقایسه کردن یکی از قسمت های 2 مقدار تاریخ هستش.ارگومان اول همون قسمت مورد نظره که مثل تابع قبلی مقدار دهی میشه.آرگومان دوم تاریخ1 بعدی تاریخ 2 هستش.مثلا (()DateDiff(“yyyy”,Date(),DateAdd(“yyyy”,3,Date مقدار 3 رو برمیگردونه.

DatePart .37 یک قسمت از یک تاریخ ( یا زمان) رو برمیگردونه.آرگومان اول مثل 2 تابع قبلیه.دومی هم تاریخ مورد نظر.مثلا (()DatePart(“h”,Time الان برای من 17 رو برمیگردونه (ساعت 5 بعد از ظهر).

DateSerial .39 روز و ماه و سال رو به عدد میگیره و تاریخ رو برمیگردونه.

DateValue .40 کار قبلی رو میکنه فقط مقدار رو یکجا(از نوع رشته) میگیره.مثلx (“DateValue(“2002/09/11 رو میگیره و تاریخ رو از نوع Date برمیگردونه.
پنج شنبه بیست و ششم 10 1387
اموزش توابع داخلی Visual Basic ( نزدیک به 180 تابع )

Abs .1 قدر مطلق یک عدد رو برمیگردونه

appActivate .2 عنوان یه پنجره رو میگیره و اونو فعال میکنه

Asc .3 یه کاراکتر میگیره و کد اسکی اون رو برمیگردونه (بین 0 تا 255) .اگه بهش رشته بدین کاراکتر اول رو بررسی میکنه .مثلاAsc(“A”)= 65

AscB .4 کار قبلی رو با بایت اول مقداری که بش میدیم انجام میده(نه با کاراکتر اول).خروجیش هم از نوع Byte هستش(قبلی Integer بود)

AscW .5 واسه کاراکتر های Unicode هستش یعنی مقدار کد کاراکتر Unicode (w مخفف Wide هستش) رو برمیگردونه که بین 0 تا 2 بتوان 16

Atn .6 آرک تانژانت مقداری رو که بش دادیم برمیگردونه.البته زاویه رو بر حسب رادیان برمیگردونه که اگه میخواهین بر حسب درجه بکنینش باید ضرب در 180 تقسیم بر پی بکنینش مثلا (180 * 3.14 * 1) Atnمقدار 45.0228246533569 رو برمیگردونه
البته برای بدست آوردن مقدار دقیق تر پی از (Atn(1) * 4) میتونین استفاده کنین.

Beep .7 صدای beep در میاره.

CallByName .8 با این تابع میشه با استفاده از اسم یه متد یا Property مربوط به یه شی که توی یه رشته هست متد رو فراخوانی کرد یا Property رو گرفت یا مقدار داد و ... .آرگومان اول شی مورد نظره مثل Command2 دومی متد یا Property مورد نظره مثل “Set Focus” یا “Caption” سومی نوع فراخوانییه که میخوانیم انجام بدیم .مثل vbLet مقدار دهی یه Property یا VbMethod واسه یه متد و ... .بعدی هم آرگومان هایی هستن که به اون متد باید ارسال بشن یا اگه بخواهیم Property رو عوض کنیم اون مقدار مورد نظرمون هست.اگه هم نیازی به آرگومان نباشه خالی میزاریمش.مثلا با این دستور :

CallByName Command2, "setFocus", VbMethod

فوکوس به Command2 اختصاص داده میشه یعنی کاره Command2.SetFocus رو میکنه.یا با این دستور :

CallByName Command2, "Caption", VbLet, "MyCaption!"

مقدار Caption دکمه 2 برابر MyCaption میشه

9 ta 14 . Cbool ، Cbyte،CCur ،CDate ، CDbl،CDec توابع تبدیل نوع هستن و نوع مقداری که میگیرن رو به نوعی که از اسمشون پیداست تبدیل میکنن مثلا CBool مقداری گه بش دادیم رو به نوع Boolean تبدیل میکنه.

chDir .15 دایرکتویری پیشفرض رو برای هر درایو عوض میکنه.مثلا (“chDir(“C:\windows دایرکتوری پیشفرض درایو C رو C:\Windows میکنه.بعد از این کد اگه تابع (“CurDir(“C رو فراخوانی کنین مقدار C:\windows (همون مقدار پیشفرض) برگردونده میشه.در صورتی که اگه chDir رو فراخوانی نمیکردین مقدار C:\windows\System32 رو برمیگردوند.

chDrive .16 درایو پیشفرض رو تعیین میکنه.در حالت عادی درایو پیشفرض همون درایویه که برنامه داخلش اجرا شده.یعنی وقتی تابع CurDir رو بدون دادن درایو فراخوانی کنین سراغ درایوی میره که برنامه توش اجرا شده.مثلا برای من که برنامم داره توی درایو D اجرا میشه CurDir قبل از فراخوانی (“:ChDrive(“C مقدار “D:\vb\myproj” رو برگردوند بعد از فراخوانی مقدار C:\windows\System32 رو.

Choose .17 از یه لیست ارگومان با گرفتن Index یکیشون رو برمیگردونه .مثلا

Choose(3, "Arg1", "Arg2", "Arg3", "Arg4", "Arg5")

مقدار “Arg3” رو برمیگردونه.

Chr .18 یه کد اسکی میگیره و کاراکتر مربوط به اون رو برمیگردونه.مثلا Chr(65) = “A”

Chr$ .19 مثل قبلیه فقط مقداری که برمیگردونه از نوع رشته هستش(بهتره از این به جای قبلی استفاده کنین)

ChrB .20 مثل Chr فقط همیشه یه مقدار تک بایتی Single-Byte برمیگردونه یعنی طول مقداری که برمیگردونه از لحاظ بایت 1 هستش در صورتی که برای تابع قبلی 2 مثلا توی حافظه : Chr(65) => 65 00 ولی 65 <=(ChrB(65
پنج شنبه بیست و ششم 10 1387
 اپراتور

این اپراتور برای تشخیص نوع کنترل به کار می رود.روش استفاده از ان به شکل زیر است

TypeOf ControlName Is ControlType

مثال:کنترلی از نوع فایل بوکس رابه تایع زیر می فرستیم یرای تعیین عضو انتخاب شده

Private Function GetSelectItem(LST as Contol) as String
if TypeOf lst is listbox then
GetselectItem=Lst.text:Exit Function
else :GetselectItem=Lst.FileName:Exit Sub
End if

در خط یک تابع با آرگومان یک لیست از نوع کنترل تعریف می شود خروجی تایپ آف به صورت یک منو مانند تعریف متغییر هنگام کد نویسی ظاهر می شود که شما می توانید نو ع کنترل خود را از داخل آن انتخاب کنید.توجه کنید بین تایپ و آف نباید فاصله بیفتد واگر نه با خطای کامپایل مواجه می شوید.

DoEvents اپراتور

این اپراتور برای ارجاع تمام عملییات به سی پی یو برای انجام می باشد.اکثرآ از این اپراتور برای مواقعی استفاده می گردد که یک عملیات وقتگیر در حال انجام است مانند اعمال افکت روی تصویر و حلقه های تکرار طولانی. این اپراتور در درون حلقه قرار گرفته و کامپایل نمی شود مانند رهنمود ها در پاسکال عمل می کندوبه سی پی یو می گوید تمام کارهیت را به صورت یکسان انجام بده واز اولویت ها صرف نظر کن .در برنامه هایی که یک عملیات در درون یک حلقه هر دور انجام می شود آکثرآ باعث هنک کردن آن برنامه تا پایان عملیات می شود.چون برنامه بین واکنش به تکان خوردن موس -جابه جاکردن برنامه یا بزرگ و کوچک کردن برنامه وپردازش روی عملیات مورد نظر(مثلآ کپی فایل)عملییاتی که دارای اولویت پردازش است را انتخاب می کند.این اپراتور در چنین مواقعی بسیار مفید است وباعث می شود کاربر گمان نکند که برنامه هنک کرده و آن را ببندد.مثال:ِ

For i=0 to list1.listCount -1
if list1.list(i)<>"" then call Copy(list1.list(i),App.path+"\")
DoEvents
Next

در خط اول حلقه ای از صفر تا تعداد اعناصر موجود در لیست اغازمی شودو در هر درو فایل درون لیست در صورت وجود کپی می شود .اگر فایل های مازیاد باشد DoEventsو اپراتور را ننویسیم حتمآ برنامه ما هنک می کند.باید یاد آور شد استفاده نابجا و بیش از اندازه این اپراتور موجب کاهش سرعت برنامه می شود.ِالبته

استفاده می کنندSleepبه نام APIباعث کارکرد زیاد وشدید سی پی یو می شود وبرخی ترجیح می دهند از آن استفاده نکنند ویه جای ان از یک

فرق می کند. اسلیپ باعث میشود سی پی یو تمام کار های در حال اجرا را رها کند وبه مدت زمانی که جلویDoEventsباید گفت کارکرد اسلیپ به طور کلی با

آن نوشته می شود به استراحت بپردازد.ِ

sleep با توجه به زمانی که براش تعیین میکنی در وسط کار برنامه مکث ایجاد میکنه و در آن زمان هیچ خطی از کد برنامه اجرا نمیشه و همان طور که از اسم تابع .مشخصه برنامه در آن زمان به خواب میره
اسلیپ زمانی که با محیط خارج از برنامه در ارتباطی خیلی مفیده. چون معمولا وقتی دستوری در وی بی مثل اجرای فلان فایل مدتی طول می کشد و تو این مدت دستورات بعدی سریع اجرا می شوند که ممکن است نتیجه اش به اجای فایل بستگی داشته با شه.اسلیپ باعث میشه به ویندوز فرصت بدی سایر دستورات فرستاده شده به خارج برنامه رو اجرا کنه. البته گاهی اوقات هم نمیدونیم چند ثانیه مکث کنیم و ممکنه مجبور شیم برای احتیاط زمان زیادی مکث کنیم که سرعت برنامه میاد پایین پس تا می تونیم از دستورات خود وی بی استفاده کنیم تا بر نامه های خارجی.ِ

Shell دستور

توسط این دستور می تونید فایلی را در وی بی اجرا کنید .آدرسی که جلوی این دستور نوشته می شه اجرا میشه .شکل این دستور به این صورت است:ِ

Shell ProgramPath,RunModel

در آرگومان اول مسیر فایل نوشته می شود ودر آرگومان دوم مدلی که برنامه باید اجرا شود.در این ارگومان از آرگومان های زیر استفاده می گردد

vbHide=0 vbMaximizedFocus=1 vbMinimizedFocus=2 vbMinimizedNoFocus=3 vbNormalFocus=4 vbNormalNoFocus=5

در مدل صفر برنامه به صورت پنهان ظاهر می شود.برای مواقعی که می خواهیم عمل اجرا را از دید کاربر پنهان کنیم .در مدل 2 برنامه اجرا می شود به صورت کمینه(روی منوی استارت-مینیمایز شده)وفاکس هم روی ان می رود یعنی این که بعد از اجرا هی زرد و آبی می شود تا کار بر روی آن کلیک کند.مدل 3برنامه به

صورت ینیمایز -کمینه اجرا می شود زرد وآبی نمی شود (معمولی-فاکس رویش نمی رود).مدل 1برنامه به صورت تمام صفحه اجرا شده فاکس هم روی آن می رود(زرد و ابی می شود).در مدل 4برنامه با اندازه پیش فرض اجرا می شودوفاکس را هم می گیرد.درمدل 5برنامه با اندازه معمولی اجرا شده و فاکس نمی گیرد

کار برد مهم دیگر شل اجرا فایل های معمولی با یک برنامه اجرایی است مثل اجرای یک متن در نت پد.برای این کار نام فایل را بایک فاصله از نام فایل می نویسیم

Shell "NotPath.Exe"+" C:\Text1.txt" ,4
پنج شنبه بیست و ششم 10 1387
فرمت فایل M3U
چگونه یک فایل PlayList با پسوند M3U بسازیم

گاهی وقتی عده ی زیادی فایل را در مدیا پلیر یا وینمپ باز می کنیم یک گزینه به نام SavePlaylist
می بینیم که برای ذخیره کردن آن لیست در یک فایل استفاده می شود.اگر یک برنامه ی پخش صوت یا تصویر باکنترل مدیا پلیر نیز بنویسید برای پخش هم زمان چندین فایل به مشکل برخواهید خورد .درچنین مواقعی می توانیم با ذخیره لیست در یک فایل ام تری یو وباز کردن آن در کنترل مدیا پلیر چندین فایل را با هم پخش کرد .شاید شما بتوانید فایل هایتان را مستقیمآ به لیست مدیا پلیر احتیاج به دانستن فرمت فایل ام تری یو داریدPlayListاضافه کنید ولی باز هم برای ذخیره

با این تابع این کار را انجام دهید

Public Sub SaveList(OutPath As String,Lst as ListBox)
On Error Resume Next '--------------------------------------------------
Dim T3 As String, T2, strans As String, L As Single, i As Integer
T3 = "": T2 = ""
If Lst.List(1) = "" Then
strans = MsgBox("File Not Found!", vbCritical)
Exit Sub '------------------------------------------------------
End If
If UCase(Right(OutPath, 3)) <> "M3U" Then Exit Sub
Open OutPath For Output As #1
Print #1, "#EXTM3U:"
For i = 1 To Lst.ListCount '----------------------------
Print #1, "#EXTNIF:"
Print #1, Lst.List(i)
Next i '------------------------------------------------------
Close #1
End Sub

حال برای زخیره کردن فایل های صوتی و تصویری موجود در یک لیست تنها به دستور زیر نیاز دارید

SaveList "C:\1.M3U",List1
پنج شنبه بیست و ششم 10 1387
توسط این دستور می تونید فایلی را در وی بی اجرا کنید .آدرسی که جلوی این دستور نوشته می شه اجرا میشه .شکل این دستور به این صورت است

Shell ProgramPath,RunModel

در آرگومان اول مسیر فایل نوشته می شود ودر آرگومان دوم مدلی که برنامه باید اجرا شود.در این ارگومان از آرگومان های زیر استفاده می گردد

vbHide=0 vbMaximizedFocus=1 vbMinimizedFocus=2 vbMinimizedNoFocus=3 vbNormalFocus=4 vbNormalNoFocus=5

در مدل صفر برنامه به صورت پنهان ظاهر می شود.برای مواقعی که می خواهیم عمل اجرا را از دید کاربر پنهان کنیم .در مدل 2 برنامه اجرا می شود به صورت کمینه(روی منوی استارت-مینیمایز شده)وفاکس هم روی ان می رود یعنی این که بعد از اجرا هی زرد و آبی می شود تا کار بر روی آن کلیک کند.مدل 3برنامه به

صورت ینیمایز -کمینه اجرا می شود زرد وآبی نمی شود (معمولی-فاکس رویش نمی رود).مدل 1برنامه به صورت تمام صفحه اجرا شده فاکس هم روی آن می رود(زرد و ابی می شود).در مدل 4برنامه با اندازه پیش فرض اجرا می شودوفاکس را هم می گیرد.درمدل 5برنامه با اندازه معمولی اجرا شده و فاکس نمی گیرد

کار برد مهم دیگر شل اجرا فایل های معمولی با یک برنامه اجرایی است مثل اجرای یک متن در نت پد.برای این کار نام فایل را بایک فاصله از نام فایل می نویسیم

Shell "NotPath.Exe"+" C:\Text1.txt" ,4

توجه داشته باشید که برای اجرای فایل باید نام ومسیر فیل را با یک کاراکتر فاصله بنویسید

اگر فاصله ندهید قطعآ خطا انجام می شود.اگر فایلی در مسیر برنامه تان کپی کرده اید این کد را بنویسید

shell "notpath.exe"+(app.path+"\"+"your File Name")

کلاسی است که به برنامه اشاره می کند ومی توان اطلاعات برنامه مانند مسیر-نام فایل اجرائی-کمپانی وغیرهapp

برای نوتپد ویندوز چون در درایو ویندوز قرار دارد احتیاج به تایپ مسیر کامل نیست همچنین اگر شما فایلی را از پوشه

اجرا کنید به مسیر کامل نیاز نیست برنامه ای مانند کامند پرامپت بازی ها واسکرین سیور ها در این پوشه system32

است.مثال hell "cmd.exe",4

اجرای یک فولدر با شل

واقع در درایو ویندوز را به همراه نام فیل اجرا می کنیمexplorer.exeبرای این کار فایل اجرائی

shell "explorer.exe"+" c:\windows" ,3

با اجرای این برنامه پوشه ویندوز اجرا می شود روش بالا در سی دی های اتوران استفاده ی زیادی دارد

Shell "rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl "کادر حذف برنامه ها
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl"کادر تغییر پس زمینه
Shell "rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl"کادر اینتر نت
Shell "rundll32.exe shell32.dll,Control_RunDLL modem.cpl"کادر مودم
Shell "rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl"کادر صدا
Shell "rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl"کادر شبکه
Shell "rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl"کادر پاور-برق
Shell "rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl"کادر سیستم
Shell "rundll32.exe shell32.dll,Control_RunDLL telephon.cpl"کادر تلفن
Shell "rundll32.exe shell32.dll,Control_RunDLL timedate.cpl"کادر ساعت

کتابخانه وسیع Shell

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal_ lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal_ nShowCmd As Long) As Long

کد های زیر را هر جا استفاده کنید جواب می دهدالبته بهد از اینکه کد بالا را در اولین خط فرم نوشتید

Shell "arp"
Shell "drvspace"
Shell "drwatson"
Shell "explorer"برای my document
Shell "freecell"
Shell "ftp"برای تنظیم اف تی پی
Shell "ipconfig"کادر آی پی
Shell "mplayer"مدیا پلیر
Shell "mshearts"
Shell "nbtstat"
Shell "netstat"
Shell "calc"ماشین حساب
Shell "notepad"نوت پد
Shell "packager"
Shell "pbrush"نقاشی
Shell "ping"
Shell "regedit"ریجیستری
Shell "route"روت
Shell "scandskw"اسکن دیسک
Shell "scanregw"اسکن رگ
Shell "setdebug"کخک تری تنظیم ویندوز
Shell "sigverif"
Shell "cdplayer"سی دی پلیر
Shell "sndrec32"ضبط صدا
Shell "sndvol32"تنظیم ولوم صدا
Shell "sol"همون سول
Shell "taskman"وضعیت سی پی یو
Shell "telnet"تلفن
Shell "vcmui"
Shell "winfile"
Shell "winipcfg"
Shell "winmine"
Shell "winrep"
Shell "charmap"کاراکتر مپ
Shell "winver"
Shell "write"وورد پد
Shell "wscript"
Shell "cleanmgr"کلنر پاک کننده اشغال درایو
Shell "control"کنترل پنل
Shell "cvt1"
Shell "defrag"دفراگمنت
Shell "drvspace" فضای خالی دیسک

اجرای فایل اینترنت با Shell
shell "Explorer.exe"+" http://www.VBLog.blogfa.comن به یک سایت
shell "explorer.exe"+" maileto:Mahdi_VBLog@yahoo.com"کادر ارسال ایمیل
shell "explorer.exe"+" yor HTML File.html"کادر اجرای یک فایل اینترنت از حافظه
shell "explorer.exe"+" file://www.سایت شما.com/11.zip"کادردانلود یک فایل از اینترنت
پنج شنبه بیست و ششم 10 1387
برنامه های سه بعدی از فضا نمی آیند توسط همین وی بی -دلفی واکثرآ سی پلاس پلاس طراحی می شن وقتی یک بازی سه بعدی روباز می کنیم ویک دفعه یک صفحه با گرافیکی که تا حالا ندیدیم یه صورت زیبا بالا می آد اکثر ما -بیشتر خودم- خیلی کف میکنیم که این برنامه ها چطور ساخته می شن-با چی ساخته می شن

امروز می خوام تنظیم ابعاد صفحه نمایش ویندوز رو با ابعاد دلخواه خودمون بگم که گام اول طراحی سه بعدیه اگه بشه شاید مراحل بعدیش رو هم بزارم روی سایت که مونده به یاری شما .بانظراتتون و خدا با توفیقش

ابتدا متغییر های اول فرم

Dim Dx As New DirectX7
Dim Dd As DirectDraw4
Dim clip As DirectDrawClipper

البته بعد از نوشتن کد بالا به منوی پروژه رفته گزینه ریفرنس رو انتخاب کنید در منوی باز شده تیک گزینه ی دایرکت ایکس 7 رو بزنید

تا کد هاتون اجرا بشه روی فرم دابل کلاک کنید و کد زیر رو بنویسید

Set Dd = Dx.DirectDraw4Create("")
Set clip = Dd.CreateClipper(0)
clip.SetHWnd Me.hWnd
' screen mode
Dd.SetDisplayMode 800, 600, 32, 0, DDSDM_DEFAULT

بااین کد صفحه نمایش به مد 800*600و حالت 32بایتی میره
پنج شنبه بیست و ششم 10 1387
کلاس یک مجموعه ای از کدهاست که شبیه به یک کنترل هستند فقط شکل ظاهری و طراحی ندارند
کلاس ها شی هستند - یعنی خاصیت دارند -کلاس ها می توانند داخل خود پردازه یا تابع محلی وسراسری داشته باشند
کلاس به چه دردی می خورد-کلاسها از تکرار کدها جلو گیری می کنند -کلاس ها خوانایی برنامه را افزایش می دهندوغیره
کلاس ها می توانند به صورت خودکار خود را مقدار دهی کنند-یک ماژول کلاس ایجاد کنید وکدهای زیر را در آن کپی کنید

تعریف یک خاصیت در کلاس

'-----------Set Property Information---------

Public Poperty Let CWidth( Value As Integer)
CWidth=Value
End Property

'------------Get Property Information--------------

Public Property Get CWidth() As Integer
CWidth=CForm.Width
End Property

دستور اول خاصیت را مقدار دهی می کند با مقداری که کار بر فرستاده
دستور دوم برای دادن مقدار برای کابر است .البته هر کدام از این دستورات را می توان به صورت محلی استفاده کرد
وی بی با کلاس ها مانند یک نوع جدید رفتار می کند یعنی شما برای استفاده از یک کلاس در سطح فرم باید یک متغیر از
نوع کلاس تعریف کنید .تعرف یک متغییر محلی در سطح فرم

Private CForm As Form

تمام متغییر ها وتوابع وپردازه ها وحتی نام خود کلاس را با سی آغاز کنید تا معلوم شود مربوط به یک کلاس است
تعرف یک پردازه سراسری در کلاس

Private Sub CSetInfo(Frm As Form)
Set Form=Frm
End Sub

اگر تمام کدها بالا را درست در یک ماژول کلاس کپی کنید اکنون نوبت استفاده از کدهای بالاست
در خط اول فرم یک متغییر از نوع نام کلاس تعریف کنید.بدین صورت

Dim Calss As Class1
Private Sub Form_Resiz()
Me.Caption="Form1.Width: "& Class.With
End Sub
پنج شنبه بیست و ششم 10 1387
کوتاهترین راه برای ساخت یک ساعت روش زیر است یک Picturebox به فرم اضافه کنید

Private Sub Form_Load()
Static Score As Long
Counter.Show
DoEvents
Score = 0
For I = 1 To 1265
DisplayNumber 10, Score
Score = I
DoEvents
Next
End Sub'-------------------------------------------------------------------
Private Sub DisplayNumber(DisplayWidth As Integer, TheNumber As Long)
Dim DisplayString As String, Zeros As Integer, GraphicsHeight As Single
Dim DigitValue As Integer, NumPosition As Integer
'--------------------Start Time---------------
GraphicsHeight = Picture1.ScaleHeight / 2
Zeros = DisplayWidth - Len(Trim(TheNumber))
For I = 0 To Zeros - 1
DisplayString = DisplayString & "0"
Next
DisplayString = DisplayString & Trim(Str(TheNumber))
For I = 0 To DisplayWidth - 1
DigitValue = Val(Mid(DisplayString, I + 1, 1))
If DigitValue = 0 Then NumPosition = 10 Else NumPosition = DigitValue _
Counter.PaintPicture Picture1.Image, I * (Picture1.ScaleWidth / 10), 0, _
Picture1.ScaleWidth / 10, Picture1.ScaleHeight / 2, (NumPosition - 1) _
* (Picture1.ScaleWidth / 10), GraphicsHeight, Picture1.ScaleWidth / 10, Picture1.ScaleHeight / 2
Next
End Sub

در کد بالا به دلایلی فرم خارج نمی شود باید یک دکمه برای خروج از فرم تنظیم کنیدودر کد کلیک آن بنوسید
End
پنج شنبه بیست و ششم 10 1387
On Error GoTo B
Dim r%, F%, Heght%, Wath%, X%, Color$ '--\/\/\/ Set Color Of Form
Color = "Red_Black" '----------------تعیین تیف رنگ
Heigh = Me.Height + 200: Widt = Me.Width
F = Heigh \ 255: r = 0
Select Case Color
Case "Red_Black": GoTo 1
Case "With_Red": GoTo 2
Case "Green_Black": GoTo 3
Case "With_Green": GoTo 4
Case "Blue_Black": GoTo 5
Case "With_Blue": GoTo 6
Case "With_Black": GoTo 7
End Select
Exit Sub '---------------------------Main--------------------------------------------
1
For i = 0 To Heigh Step F
r = r + 1
If r = 20000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(250 - r, 0, 0)
Next X
Next i: GoTo B
2 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 20000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(250, 254 - r, 255 - r)
Next X
Next i: GoTo B
3 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 20000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(0, 250 - r, 0)
Next X
Next i: GoTo B
4 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 20000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(250 - r, 255, 255 - r)
Next X
Next i: GoTo B
5 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 255 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(0, 0, 250 - r)
Next X
Next i: GoTo B
6 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 20000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(250 - r, 250 - r, 255)
Next X
Next i: GoTo B
7 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 9000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(250 - r, 250 - r, 250 - r)
Next X
Next i '--------------------------------------------------------------------------------
B:
Set Me.Picture = Me.Image

میتونید این کد رو خیلی کوتاه استفاده کنید وهرخط چینی که مربوط به رنگ خودتونه رو نگه دارید بقیه رو حذف کنید.با کمی دقت می توانید رنگ های جدید بسازید
پنج شنبه بیست و ششم 10 1387
Private Declare Function SetPixelV Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Byte
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long

Private Sub CmdBrightness_Click()
'variables for brightness, color calculation, positioning
Dim Brightness As Single
Dim NewColor As Long
Dim x, y As Integer
Dim r, g, b As Integer
'change the brightness to a percent
Brightness = TxtBrightness / 100
'run a loop through the picture to change every pixel
For x = 0 To Picture1.ScaleWidth
For y = 0 To Picture1.ScaleHeight
'get the current color value
NewColor = GetPixel(Picture1.hDC, x, y)
'extract the R,G,B values from the long returned by GetPixel
r = (NewColor Mod 256)
b = (Int(NewColor / 65536))
g = ((NewColor - (b * 65536) - r) / 256)
'change the RGB settings to their appropriate brightness
r = r * Brightness
b = b * Brightness
g = g * Brightness
'make sure the new variables aren't too high or too low
If r > 255 Then r = 255
If r < 0 Then r = 0
If b > 255 Then b = 255
If b < 0 Then b = 0
If g > 255 Then g = 255
If g < 0 Then g = 0
'set the new pixel
SetPixelV Picture1.hDC, x, y, RGB(r, g, b)
'continue through the loop
Next y
'refresh the picture box every 10 lines (a nice progress bar effect)
If x Mod 10 = 0 Then Picture1.Refresh
Next x
'final picture refresh
Picture1.Refresh
End Sub

احتیاج دارید که متن درون آن به درصد برابر میزان روشنایی استTxtBrightnessیک کادر متن به نامCmdBrightnessحال کردین با توضیحات کامل برای کد بالا یک کامند به نام
پنج شنبه بیست و ششم 10 1387
این خط رو در اولین خط کد فرم بنویسید-برای مبتدی ها

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

طریقه استفاده
Private Sub Form_load()
Dim W, H
W = Screen.Width / 15
H = Screen.Height / 15
StretchBlt hdc, 0, 0, W, H, GetDC(0&), 0, 0, W, H, vbSrcCopy
End Sub

کشیدن یک دایره روی فرم با کد نویسی-نمودار دایره ای-بیضی
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
PI = 3.14159265
For i = 0 To 161 Step 10
Me.Circle (219, 167), i, RGB(0, 0, 0), 360 * (PI / 180), 360 * (PI / 180), 1
Next
End Sub

آنرا به 3 تغییر دهید.داشتم می گفتم پارامتر سوم برای شعاع دایره -اندازه آن-پارامتر چهارمscalmode توضیحات: پارامتر اول ودوم مکان ترسیم دایره اگر دایره در فرم شما رسم نشد خاصیت
برای رنگ پنجم برای نقطعه شروع وششم برای نقطه ی پایان این دو تا برای رسم نمودار دایره ای بکار می روند.پارامتر آخر هم برای رسم بیضی استفاده می شود

چگونه می توان یک مداد درست کرد مانند برنامه نقاشی ویندوز
کد زیر را در MouseMove بنویسید
If Button <> vbright Then Me.PSet (X, Y)

چطور می توان یک قطره چکان درست کرد که روی هر گزینه رفت رنگ پیش فرض رنگ انجا شود
عکس بنویسیدMouseMoveبه فرم اضافه کنید یک عکس داخل کادر عکس قرار دهید و کدزیر را در رویدادPictureویکLabelیک

Label1.BackColor=Picture1.Point(X,Y)

چطور می توان یک عکس را معکوس کرد
منظورت ازمعکوس اگه معکوس خود عکس در طراحی باشه کد زیر جوابش هست

With Picture1
.PaintPicture .Picture, 0, .Height, .Width, -.Height
End With

ولی اگه منظورت معکوس رنگ باشه کد زیر جوابش هست
With Picture1
.PaintPicture .Picture, 0, 0, , , , , , , vbDstInvert
End With

یرای موقعی به کار می رود که از یک اسم زیاداستفاده می کنیم.اسم را جلوی آن مینویسیم وهر وقت یک دات بزنیم قابل استفاده استWithتوضیحات:ِ
پارامتر اول یرای عکسی که میخواهیم از آن برای ترسیم استفاده کنیم.دوم و سوم برای نقطه شروع ترسیم .چهارم و پنجم برای اندازه تصویر ترسیمی.ششموهفتم برای نقطه پایان ترسیم.هشتم ونهم برای اندازه های پایانی ترسیم وپارامتر آخر برای نوع ترسیم
پنج شنبه بیست و ششم 10 1387
مبحث امروز که ارتباط داره به خواندن اطلاعات اساسی فایل MP3.متغییر های زیر رو تو اول کد تعریف کنید

Dim HasTag As Boolean
Dim Tagg As String * 3
Dim Songname As String * 30
Dim Artist As String * 30
Dim Album As String * 30
Dim Year As String * 4
Dim Comment As String * 30
Dim Genre As String * 1

البته کد بالا تست شده است مورد کاملش اینهاست ولی نمی دونم جواب بده یانه خودتون امتحان کنید اگه شد بهم بگید -فعلآ استفاده نکنید

Private Type MP3Tag
FullName As String ' Filename and filepath of MP3 file
FileName As String ' Name of MP3 file
Path As String ' Path of MP3 file
title As String * 30
artist As String * 30
album As String * 30
Year As String * 4
Comment As String * 30
Genre As String * 20
TagPresent As Boolean
MPEGVersion As String * 3 ' Version 1.0, 2.0 or 3.0
Layer As String * 1 ' Layer 1, 2 or 3
Protection As Boolean ' 0=CRC is present, 1=Not Protected
BitRate As String * 3 ' Recording bitrate
SampleRate As String * 5 ' Sampling Frequency
Padding As Integer ' 0=Frame is not padded, 1=(32bits for Layer 1, 8bits for Layer 2/3)
PrivateBit As Integer ' Not used. Do what you want with it
ChannelMode As String * 12 ' 00=Stereo, 01=Joint Stereo, 10=Dual Channel Stereo, 11=Mono
ModeExtension As String * 2 ' Used only for Joint Stereo
Copyright As Boolean ' Is file copyrighted?
Original As Boolean ' Is file on original media?
Emphasis As String * 8 ' Emphasis setting (usually none (00))
FrameLength As Integer ' Calculated from BitRate, SampleRate and Padding
TotalFrames As Long ' Filelength/Framelength
PlayTime As Single ' Calculated from TotalFrames, SampleRate and Stereo?
ValidHeader As Boolean ' True=Valid Header found, False=Not an MP3 file
End Type

بعد یک پروسیجر به این صورت تعریف می کنیم تاهر وقت بهش یک نام فایل پاس دادیم متغییر هامون پر بشه از اطلاعت فایل

Private Sub GetTag(Filename)
Open Filename For Binary As #1
Get #1, FileLen(Filename) - 127, Tagg
If Not Tagg = "TAG" Then
Close #1
HasTag = False
Songname = "No Tag Found"
Artist = "No Tag Found"
Album = "No Tag Found"
Year = "None"
Comment = "No Tag Found"
Genre = "0"
Exit Sub
End If
HasTag = True
Get #1, , Songname
Get #1, , Artist
Get #1, , Album
Get #1, , Year
Get #1, , Comment
Get #1, , Genre
Close #1
End Sub

حالا به این صورت میشه ازش استفاده کرد

Me.GetTag(MP3 FileName)

به طور معمول وقتی فایل به صورت باینری باز می شه چیزی جز صفر و یک رو نمشه از توش خواند به همین دلیل این نوع باز کردن فایل رو تصویر آینه وار حافظه می گن.چون هر چی روی هارد نوشته همون رو دودستی تحویلت می ده!از این رو باید همیشه بعد از خواندن این نوع فایل ها اونارو از فرمت باینری در آورد با تابع زیر که ازقبل توی وی بی هست

Src(Your Ascii Word)

اگه رشته رو با(String *30)ولی در برنامه بالا چون اندازه رشته رو تعریف کردیم

یک کد اسکی مقدار دهی کنیم خود به خود هنگام چاپ به فرم رشته ی معمولی در میاد

در دستور بالا ما با علامت ضربدر به وی بی می گوییم که چه مقدار حافظه را برای متغییر ما نگه دارد ولی اگر این مورد را استفاده نکنیم وی بی به صورت اتوماتیک سایز رشته رو انتخاب .میکنه اگه رشته کم باشه کم واگر زیاد باشه زیاد براش جا نگه می داره به ازای هر حرف یک بایت
پنج شنبه بیست و ششم 10 1387
کنترل WindowsMediaPlayer که توسط کتابخانه قدرتمندی پشتیبانی می شود را می توان در انواع ویندوز استفاده کرد

نحوه ی استفاده از کنترل. از منوی Components\WindowsMediaPlayer گزینه WindowsMediaPlayer را انتخاب کنید

قبل از اینکه آن کادر را ببندید MicrosoftCommonDialog را هم انتخاب کنید

یک دکمه قرار دهید و کد زیر را درونش وارد کنید

CommonDialog1.ShowOpen
WindowsMediaPlayer1.URL=CommDialog1.FileName

مشاهده می کنید که کادر فایل باز شده و فایل انتخاب شده پخش می شود

private sub Play_Click()
WindowsMediaPlayer1.Controls.Play()
End Sub

'------------------------
Prrivate Sub Stop_Click()
WindowsMediaPlayer1.Controls.Stop()
End Sub

'------------------------
Private Sub Pause_Click()
WindowsMediaPlayer1.Pause()
End Sub

یک تایمر به فرم اضافه کنید و یک HScroll1 و یک Lable
تایمر را به 50 تنظیم کنید.روی تایمر دوبار کلیک کنید وکد زیر را وارد کنید

Private sub Timer1_Timer()
Label1.Caption=WindowsMediaPlayer1.Controls.CurrentPositionString
HScroll1.max=WindowsMediaPlayer1.Controls.CurrentItem
HScrol1.Value=WindowsMediaPlayer1.Controls.CurrentPosition
End Sub
پنج شنبه بیست و ششم 10 1387
یک فرم ایجاد کنید و یه هفت تا لیبل بزارین روش با یه تایمر و یه HScroll
خاصیت Max مربوط به اسکرول رو روی 100 بزارین
خاصیت Interval تایمر رو روی 50 بزارین

این کدها رو اولین خط فرم بنویسید

'----------Type New Data For Memory------------------
Private Type MEMORYSTATUS
dwlength As Long
dwMemoryLoad As Long
dwTotalPhys As Long
dwAvailPhys As Long
dwTotalPageFile As Long
dwAvailPageFile As Long
dwTotalVirtual As Long
dwAvailVirtual As Long
End Type '------------------Declear API Of Kernal Windows Librery-------------
Private Declare Sub GlobalMemoryStatus Lib "KERNEL32" (lpBuffer As MEMORYSTATUS)
Dim Mem As MEMORYSTATUS

روی تایمر دابل کلیک کنید و کد زیر را بنویسید

GlobalMemoryStatus Mem
Me.Caption = Mem.dwMemoryLoad & "% used"
Label1.Caption = "Memory used: " & Mem.dwMemoryLoad & "%"
Label2.Caption = "Total Physical Memory: " & Mem.dwTotalPhys
Label3.Caption = "Available Physical Memory: " & Mem.dwAvailPhys
Label4.Caption = "Page File Bytes: " & Mem.dwTotalPageFile
Label5.Caption = "Available bytes of Page File: " & Mem.dwAvailPageFile
Label6.Caption = "Total Virtual bytes: " & Mem.dwTotalVirtual
Label7.Caption = "Available Virtual Bytes: " & Mem.dwAvailVirtual
HScroll1.Value = Mem.dwMemoryLoad

با کدای بالا می تونین کارکرد CPU و RAM رو مشاهده کنید مثل خود ویندوز
پنج شنبه بیست و ششم 10 1387
چطور میتوان سطل آشغال ویندوز رو خالی کرد

اگه بخواید یک برنامه تقویت ویندوز بنویسید به گزینه خالی کردن سطل آشغال ویندوز نیاز خواهید داشت
سری قبل این اموزش رو در مورد کنترل سی پی یو (تاکس منیگر)ویندوز نوشتم
برای این کار باید از تابعی موجود در کتابخانه قدرتمند شل که در آرشیو اموزشهای زیادی راجع به این کتابخانه هست استفاده کنید

شیوه ی تعریف کتابخانه

Private Declare Function SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" (ByVal hWnd As Long, ByVal pszRootPath As String, ByVal dwFlags As Long) As Long
Const SHERB_NOPROGRESSUI = &H2

شیوه ی استفاده

Private Sub Command1_Click()
Dim retvaL
retvaL = SHEmptyRecycleBin(Form1.hWnd, "", SHERB_NOPROGRESSUI)
End Sub
پنج شنبه بیست و ششم 10 1387
کادر خصوصیات اکثرآ در نوشتن یک کاد آرشیو یا لیست فایل کاربرد دارد که شما روی نام فایل راست کلیک می کنید و این گزینه را معمولآ در انتهای لیست انتخاب می کنید واین کادر ظاهر میشود نوشتن چنین کد هایی باعث حرفه شدن برنامه ی شما می گردد

به ماژولمان کد های زیر را اضافه کنید

'------Typing New data For Propertis File---------------------
Type SHELLEXECUTEINFO
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
'---------------Conset For Propertis Dialog-------------------
Public Const SEE_MASK_INVOKEIDLIST = &HC
Public Const SEE_MASK_NOCLOSEPROCESS = &H40
Public Const SEE_MASK_FLAG_NO_UI = &H400
Public Const ATTR_NORMAL = 0
Public Const ATTR_READONLY = 1
Public Const ATTR_HIDDEN = 2
Public Const ATTR_SYSTEM = 4
Public Const ATTR_VOLUME = 8
Public Const ATTR_DIRECTORY = 16
Public Const ATTR_ARCHIVE = 32
'-----------------------Declareing API------------------------------------------
Declare Function ShellExecuteEX Lib "shell32.dll" Alias _
"ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long

'-----------------------------------------------------------------------------------------

Public Function ShowFileProperties(filename As String, OwnerhWnd As Long) As Long
Dim SEI As SHELLEXECUTEINFO
With SEI
.cbSize = Len(SEI)
.fMask = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
.hwnd = OwnerhWnd
.lpVerb = "properties"
.lpFile = filename
.lpParameters = vbNullChar
.lpDirectory = vbNullChar
.nShow = 0
.hInstApp = 0
.lpIDList = 0
End With
ShellExecuteEX SEI
ShowFileProperties = SEI.hInstApp
End Function

حالا هر فایلی را که می خواهید خصوصییاتش نمایش داد شود به این تابع به صورت زیر ارسال کنید-پاس دهید

ShowFileProperties(FileName,Me.hwn
پنج شنبه بیست و ششم 10 1387
این کادر استفاده ی بسیار زیادی در برنامه های کاربردی داره.وموقعی استفاده می شه که کار بر باید یک پوشه رو (مثلآ برای نصب برنامه )انتخاب کنه
یک ماژول ایجاد کنید و کد های زبر رابنویسید

'------Typing New data For BrowsForm---------------------
Public Type BrowseInfo
hWndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type

'---------------Conset For BrowsForm--------------------
Public Const BIF_RETURNONLYFSDIRS = 1
Public Const BIF_DONTGOBELOWDOMAIN = 2
Public Const MAX_PATH = 260

'-----------------------Declareing API------------------------------------------
Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long

حال در جایی که می خواهید کادر ظاهر شود کد زیر رابنویسید

Dim lpIDList As Long
Dim sBuffer As String
Dim szTitle As String
Dim tBrowseInfo As BrowseInfo
szTitle = "Select Folder... "
With tBrowseInfo
.hWndOwner = Me.hwnd
.lpszTitle = lstrcat(szTitle, "")
.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
End With
lpIDList = SHBrowseForFolder(tBrowseInfo)
If (lpIDList) Then
sBuffer = Space(MAX_PATH)
SHGetPathFromIDList lpIDList, sBuffer
sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
msgbox( sBuffer)
End If

در پایان خط م اقبل آخر با یک پیغام مسیر انتخاب شده کاربر اعلام می شود که شما عزیزان می توانید آنرا به دلخواه تغییر دهید
پنج شنبه بیست و ششم 10 1387
اموزش یک کار جالب با فرم ها
تنها با دو خط کد میتونید جلوه ای رو بوجود بیارید که فکرشم نمی کردید. یک فرم رو توی یک فرم دیگه جابدید. استفاده های زیادی میشه ازش کرد. مثلا ساخت نوار ابزارهایی مثل اونی که فتوشاپ داره. راجع بهش فکر کنید
این هم کدش

Private Declare Function SetParent Lib "user32" ( _
ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Private Sub Form_Load()
SetParent Form2.hWnd, hWnd
Form2.Show
End Sub
پنج شنبه بیست و ششم 10 1387
اول فراخوانی توابع

Option Explicit
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

بعد سه تا کامند برای ظاهر کردن آیکون ها مخفی کردن آنها و خروج از فرم بنویسید

کد هر کدام اینطور است

Private Sub cmdDHide_Click()
Dim hWnd As Long
hWnd = FindWindowEx(0&, 0&, "Progman", vbNullString)
ShowWindow hWnd, 0
End Sub'--------------------------------
Private Sub cmdDShow_Click()
Dim hWnd As Long
hWnd = FindWindowEx(0&, 0&, "Progman", vbNullString)
ShowWindow hWnd, 5
End Sub'---------------------------------
Private Sub cmdExit_Click()
Me.Hide
End
End Sub'-------------------------------------
پنج شنبه بیست و ششم 10 1387
این کد رو هم توی پروژه دیگه تست کنید - تاریخ فارسی

MsgBox WeekdayName(Weekday(Date), False, vbSunday) & ", " & VBA.MonthName(VBA.Month(Date)) & " " & Day(Date) & ", " & VBA.Year(Date), vbOKOnly + vbInformation, "The date
پنج شنبه بیست و ششم 10 1387
البته حتما باید سریع به حالت قبل برگردونید چون موندن این حالت زیاد جالب نیست

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" _
(ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long

Private Const SPI_SCREENSAVERRUNNING = 97

حالا دو تا کامند به فرم اضافه کنید به اسم های Desabled و Enabled

کد دکمه غیر فعال کردن

Private Sub Disabled_Click()
Dim Ret As Long
Dim pOld As Boolean
Ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, pOld, 0)
End Sub

کد فعال سازی این کلید ها بهتر است این کدها را در Unload فرم نیز فراخوانی کنید

Private Sub EnableD_Click()
Dim Ret As Long
Dim pOld As Boolean
Ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, pOld, 0)
End Sub
پنج شنبه بیست و ششم 10 1387
چطور می شه دکمه بستن پنجره در گوشه فرم رو غیر فعال کرد
شاید غیر فعال کرد دکمه های تمام صفحه و کمینه رو بلد باشین ولی
دیگه فرم خاصیت غیر فعال کردن دکمه close رو نداره مگه کنترل بوکس فرم رو
برداریم یا اصلآ فرم رو از نوع بدون منوی بالا وتیتر انتخاب کنیم
ولی با این کد می تونین با داشتن تمام کنترل ها فقط دکمه کلوز رو غیر فعال کنین
تابع زیر رو تعریف کنید

Public Const SC_CLOSE = &HF060
Public Const MF_BYCOMMAND = &H0
Public Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Public Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

Public Sub DisableXbutton(ByVal frmHwnd As Long)
Dim hMenu As Long
hMenu = GetSystemMenu(frmHwnd, 0&)
If hMenu Then
Call DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
DrawMenuBar (frmHwnd)
End If
End Sub

حالا کد زیر رو داخل Form_Load بنویسید

DisableXbutton (Me.hwnd)
پنج شنبه بیست و ششم 10 1387
مخفی کردن منوی Start
برای مخفی کردن منوی Start به یک تابع از کتابخانه user32.dll احتیاج دارید

Option Explicit

Dim hwnd1 As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Const SWP_HIDEWINDOW = &H80
Const SWP_SHOWWINDOW = &H40

حالا باید دو تا دکمه برای مخفی و آشکار کردن منوی Startبه فرم اضافه کنید

کد مخفی کردن Start
Hwnd1=FindWindow("Shell_traywnd","")
call SetWindowPos(Hwnd1,0,0,0,0,0,SWP_HIDEWINDOW)

کد ظاهر کردن Start
call SetWindowPos(Hwnd1,0,0,0,0,0,SWP_SHOWWINDOW)

*****************************
آیکون یک برنامه رو از کالبدش کشید بیرون و به صورت فایل آیکون ذخیره کرد
این آموزش از سری آموزشی کتابخانه قدرتمند Shell هست
یک ماژول به پروژه اضافه کنید و کد زیر را داخلش کپی کنید

Public Const MAX_PATH = 260
Public Const SHGFI_DISPLAYNAME = &H200
Public Const SHGFI_EXETYPE = &H2000
Public Const SHGFI_SYSICONINDEX = &H4000 ' System icon index
Public Const SHGFI_LARGEICON = &H0 ' Large icon
Public Const SHGFI_SMALLICON = &H1 ' Small icon
Public Const ILD_TRANSPARENT = &H1 ' Display transparent
Public Const SHGFI_SHELLICONSIZE = &H4
Public Const SHGFI_TYPENAME = &H400
Public Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME _
Or SHGFI_SHELLICONSIZE Or SHGFI_SYSICONINDEX _
Or SHGFI_DISPLAYNAME Or SHGFI_EXETYPE

Public Type SHFILEINFO
hIcon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * MAX_PATH
szTypeName As String * 80
End Type

Public Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" _
(ByVal pszPath As String, _
ByVal dwFileAttributes As Long, _
psfi As SHFILEINFO, _
ByVal cbSizeFileInfo As Long, _
ByVal uFlags As Long) As Long

Public Declare Function ImageList_Draw Lib "comctl32.dll" _
(ByVal himl&, ByVal i&, ByVal hDCDest& _
,ByVal x&, ByVal y&, ByVal flags&) As Long
Public shinfo As SHFILEINFO

یه دکمه به برنامه اضافه کنید و یک texbox و با دو تا picbox و دو تا برچسب
و اینکه نام picbox ها رو image1 و image2 قرار بدهید
آدرس فایل اجرایی را داخل texbox بنویسید و در کد کلیک دکمه کد زیر را بنویسید

Dim hImgSmall As Long
Dim hImgLarge As Long
Dim FileName As String
Dim r As Long

FileName$ = Text1.Text
hImgSmall& = SHGetFileInfo(FileName$, 0&, shinfo, Len(shinfo), BASIC_SHGFI_FLAGS Or SHGFI_SMALLICON)
hImgLarge& = SHGetFileInfo(FileName$, 0&, shinfo, Len(shinfo), BASIC_SHGFI_FLAGS Or SHGFI_LARGEICON)
Label1.Caption = Left$(shinfo.szDisplayName, InStr(shinfo.szDisplayName, Chr$(0)) - 1)
Label2.Caption = Left$(shinfo.szTypeName, InStr(shinfo.szTypeName, Chr$(0)) - 1)

image1.Picture = LoadPicture()
image2.Picture = LoadPicture()

r& = ImageList_Draw(hImgSmall&, shinfo.iIcon, image1.hDC, 0, 0, ILD_TRANSPARENT)
r& = ImageList_Draw(hImgLarge&, shinfo.iIcon, image2.hDC, 0, 0, ILD_TRANSPARENT
پنج شنبه بیست و ششم 10 1387
تا حالا دیدین کسی قلب خودش رو جلوی دیگران در بیاره
اما دیوید بلین جادوگر بزرگ امریکایی این کار رو کرد
http://www.ljava2.persiangig.com/audio/blaine.asf

برنامه ای که با آن می توان فایل اجرایی را باز کرد و سورسش را دید
http://www.hot.ee/microtools4u/Versions/SourceEditor.zip
کرکش
http://ar.yahoo.com/*http://64.233.98.43/e-Lunatic/15.08.Source.Editor.v2.26.zip

یک فرم MDI پیشرفته
http://www.pscode.com/vb/scripts/ShowZip.asp?lngWId=1&lngCodeId=57502&strZipAccessCode=tp%2F%5B575020912

یک برنامه جالب برای بزرگ نمایی روی Desktop
http://download.mehrzad.net/Default.aspx?ID=2
پنج شنبه بیست و ششم 10 1387
X